﻿#define _CRT_SECURE_NO_WARNINGS

//#include<stdio.h>
//int main()
//{
//	printf("HELLO world\n");
//	return 0;
//}

//#include<stdio.h>
//int search(int arr[], int sz,int k)
//{
//	int left = 0;
//	int right = sz - 1;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > k)
//		{
//			right = mid - 1;
//		}
//		else if (arr[mid] < k)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,56,78,95,112,113 };
//	int k = 78;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int ret=search(arr, sz,k);
//	printf("下标为：%d\n", ret);
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	float a = 10000.000f;//默认是double类型，加f表明是float类型的。
//	printf("%f", a);
//	return 0;
//}

//#include<stdio.h>
//int num = 10;
//int main()
//{
//	int num = 100;
//	printf("%d", num);//当全局变量和局部变量名字冲突时，局部变量优先。（尽量不要冲突）
//	return 0;
//}

//数字相加.
//#include<stdio.h>
//int main()
//{
//	int num1;
//	int num2;
//	scanf("%d%d", &num1, &num2);
//	int sum = num1 + num2;
//	printf("sum=%d", sum);
//	return 0;
//}

//函数
//#include<stdio.h>
//int sum(int a, int b)
//{
//	return a + b;
//}
//int main()
//{
//	int num1;
//	int num2;
//	scanf("%d%d", &num1, &num2);
//	int Sum=sum(num1, num2);
//	printf("和为：%d", Sum);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int x;
//	scanf("%d", &x);
//	if (x < 0)
//	{
//		printf("%d\n", 1);
//	}
//	else if (x == 0)
//	{
//		printf("%d\n", 0);
//	}
//	else
//	{
//		printf("%d\n", -1);
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	printf("     **\n");
//	printf("     **\n");
//	printf("************\n");
//	printf("************\n");
//	printf("     **\n");
//	printf("     **\n");
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int iq;
//	scanf("%d", &iq);
//	if (iq >= 140)
//	{
//		printf("Genius\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	const int a = 10;
//	a = 20;//a是常变量，不可以修改.
//	printf("%d", a);
//	return 0;
//}

//#define a 15
//#include<stdio.h>
//void test()
//{
//	printf("2:%d\n", a);
//}
//int main()
//{
//	printf("1:%d\n", a);
//	test();
//	return 0;
//}


//#include<stdio.h>
//enum day
//{
//	Monday,
//	Tuesday,
//	Wednesday,
//	Thursday,
//	Friday,
//	Saturday,
//	sunday
//};
//int main()
//{
//	//enum day time = Wednesday;
//	printf("%d\n", Monday);
//	printf("%d\n", Tuesday);
//	printf("%d\n", Wednesday);
//	printf("%d\n", Thursday);
//	printf("%d\n", Friday);
//	printf("%d\n", Saturday);
//	printf("%d\n", sunday);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[] = "abcdef";//字符串的结束标志是一个\0的转义字符。（字符串隐藏\0）
//	printf("%s", arr);//给起始地址就可以自动往下打印字符串。
//	return 0;
//}

//#include<stdio.h>
//int max(int x, int y)
//{
//	if (x > y)
//		return x;
//	else
//		return y;
//}
//int main()
//{
//	int a;
//	int b;
//	scanf("%d%d", &a, &b);
//	int Max = max(a, b);
//	printf("max=%d\n", Max);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a;
//	int b;
//	scanf("%d%d", &a, &b);
//	printf("%d ",a / b);
//	printf("%d\n",a % b);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i;
//	float sum =0.0f;
//	float av =0.0f;
//	float arr[5] = { 0 };
//	for (i = 0; i < 5; i++)
//	{
//		scanf("%f", &arr[i]);
//	}
//	for (i = 0; i < 5; i++)
//	{
//		sum = sum + arr[i];
//	}
//	printf("%.2f", sum / 5);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i;
//	double sum = 0.0;
//	double av = 0.0;
//	double arr[5] = { 0 };
//	for (i = 0; i < 5; i++)
//	{
//		scanf("%lf", &arr[i]);
//	}
//	for (i = 0; i < 5; i++)
//	{
//		sum = sum + arr[i];
//	}
//	printf("%.2lf", sum / 5);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	double score = 0.0;
//	double sum = 0.0;
//	for (i = 0; i < 5; i++)
//	{
//		scanf("%lf", &score);
//		sum += score;
//	}
//	printf("%.2lf\n", sum / 5);
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int ret=scanf("%d%d", &a, &b);//scanf返回值是整数个数。
//	printf("%d", ret);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	printf("%d\n", '0');	//48
//	printf("%d\n", '\0');	//0
//	printf("%d", 0);		//0
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr[] = { 'a','b','c',0};			//0与\0效果一样.
//	printf("%d\n", strlen(arr));
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int arr[3] = { 1,2,3 };
//	printf("%p\n", arr);
//	printf("%p", &arr[0]+1);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	printf("%.2f", 15.0 / 4);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{

//	/*short a = 10;
//	printf("%d\n", sizeof(a));
//	printf("%d\n", sizeof(short));
//	printf("%d\n", sizeof(int));*/


//	//char arr1[] = "abc";
//	//int arr2[] = { 1,2,3 };
//	//printf("%d\n", sizeof(arr1) / sizeof(arr1[0]));		//4
//	//printf("%d\n", sizeof(arr2) / sizeof(arr2[0]));		//3


//	//int a = (int)3.64;			//强制类型转换（只取整）
//	//printf("%d\n", a);
//
//	return 0;
// 
//}


////多组输入
#include<stdio.h>
////text.1

//int main()
//{
//	int a;
//	while (scanf("%d", &a)==1)				//scanf有返回值（读取整数的个数）
//	{
//		if (a >= 145)						//Ctrl z停止
//			printf("天才\n");
//	}
//	return 0;
//}

////text.2
//int main()
//{
//	int a;
//	while (scanf("%d", &a) != EOF)				 //EOF实质是-1.    //读取失败时，返回值就是-1.
//	{								
//		if (a >= 145)							
//			printf("天才\n");
//	}
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int arr[3] = { 1,2,3 };
//	for (int i = 0; i < 3; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//
//int main()
//{
//    int arr[10] = { 0 };
//    for (int i = 0; i < 10; i++)
//    {
//        scanf("%d", &arr[i]);
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int score[10] = { 0 };
//    int i = 0;
//    for (i = 0; i < 10; i++)
//    {
//        scanf("%d", &score[i]);
//        printf("%d ", score[i]);
//    }
//    return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//    int n;
//    while (scanf("%d", &n) != EOF)
//    {
//        for (int i = 0; i < n; i++)
//        {
//            printf("*");
//        }
//        printf("\n");
//    }
//    return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//    int sum = 0;
//    int arr[5] = { 0 };
//    for (int i = 0; i < 5; i++)
//    {
//        scanf("%d", &arr[i]);
//        sum = sum + arr[i];
//
//    }
//    printf("%.1f", sum / 5.0);
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	for (int i = 0; i < 3; i++)
//	{
//		static int a = 1;
//		a++;
//		printf("%d ", a);
//	}
//	
//	return 0;
//}


//#include<stdio.h>
//
//struct book
//{
//	char name[20];
//	short price;
//
//};
//int main()
//{
//	/*int a = 10;
//	int* p = &a;
//	printf("%p\n", p);
//	printf("%p\n", &a);
//	printf("%p\n", &a+1);
//	printf("%d\n", a);
//	printf("%d\n", *p);*/
//
//	/*char A = 'w';
//	char* p = &A;*/
//	struct book b = { "活着",37 };
//	struct book* pb = &b;
//
//	printf("书名:《%s》  价格：%d\n", b.name, b.price);
//	printf("书名:《%s》  价格：%d\n", (*pb).name,(*pb).price);
//	printf("书名:《%s》  价格：%d\n", pb->name,pb->price);
//
//	return 0;
//}

//#include<stdio.h>

//struct book
//{
//	char name[20];
//	short price;
//
//};
//
//void print(struct book* m)
//{
//	printf("书名:《%s》  价格：%d\n", m->name, m->price);
//}
//
//int main()
//{
//	struct book b= { "活着",37 };
//	print(&b);

//int main()
//{
//	unsigned long long a = -1;
//	printf("%d", a);
//	return 0;
//}



//#define定义宏

//#include<stdio.h>
//#define sum(a,b) ((a)+(b))
//int main()
//{
//	int x, y;
//	scanf("%d", &x);
//	scanf("%d", &y);
//	printf("%d", sum(x, y));
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	/*static int a = 10;
//	a = 27;
//	printf("%d", a);*/
//
//
//
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//    int arr[4] = { 0 };
//    for (int i = 0; i < 4; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//    int max = arr[0];
//    for (int j = 1; j < 4; j++)
//    {
//        if (max < arr[j])
//            max = arr[j];
//    }
//    printf("%d", max);
//    return 0;
//}

//#include <stdio.h>
//
//#include <stdio.h>
//
//int main()
//{
//    int arr[10];
//    int max = 0;
//    int min = 100;
//    int m;
//    scanf("%d", &m);
//    for (int i = 0; i < m; i++)
//    {
//        scanf("%d", &arr[i]);
//        if (max < arr[i])
//            max = arr[i];
//        if (min > arr[i])
//            min = arr[i];
//    }
//    printf("%d", max - min);
//    return 0;
//}

//#include <stdio.h>

//int main()
//{
//    char arr[] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33 };
//    int i = 0;
//    //计算数组的元素个数
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    //循环遍历输出每一个元素
//    for (i = 0; i < sz; i++)
//    {
//        //%c 控制打印字符
//        printf("%c", arr[i]);//每个字符不要隔开
//    }
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr1[] = "abc";                            //4
//	char arr2[] = { '73','32', '99' };              //3
//	printf("%d\n", sizeof(arr1) / sizeof(arr1[0]));
//	printf("%d\n", sizeof(arr2) / sizeof(arr2[0]));
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[] = "739910";
//	printf("%d", sizeof(arr) / sizeof(arr[0]));
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[] = {'a','b','c'};
//	char arr1[] = "abc";
//	char arr2[] = { 73,2,3,4,5 };
//
//	return 0;
//}

//#include<stdio.h>
//
//extern int year;	
//int main()
//{
//	printf("%d\n", year);
//
//	return 0;
//}

//#include <stdio.h>
//
//int main(int argc, char** argv)
//{
//    printf("Hello, World!\n");
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char day = 0;
//	scanf("%c", &day);
//	switch ('g')
//	{
//		case 'a':
//		case 'b':
//		case 'c':
//		case 'd':
//		case 'e':
//		case 'f':
//			printf("work\n");
//			break;
//		case 'g':
//			printf("sleep\n");
//			break;
//		default:
//			printf("again\n");
//			break;
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	/*int a = 2;
//	if (1 == a)
//		printf("he");*/
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 0; 
//	int b = 2;
//	if (1 == a)
//		if (b == 2)
//			printf("1\n");
//		else
//			printf("2\n");
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	//int a = getchar();		//接收一个字符
//	//putchar(a);				//输出一个字符
//	int a = 0;
//	/*while (( a = getchar()) != EOF)
//	{
//		putchar(a);
//	}*/
//
//	while (scanf("%d", &a) != EOF)
//	{
//		printf("%d\n", a);
//	}
//
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	printf("输入密码\n");
//	char password[20] = { 0 }; 
//	scanf("%s", password);
//	while (getchar() != '\n')
//	{
//		;
//	}
//	printf("确认呢（Y/N）");
//	int a = getchar();
//	if (a == 'Y')
//		printf("ok");
//	else
//		printf("6");
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	
//	while (getchar() != EOF)
//	{
//		putchar(getchar());
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a;
//	while (scanf("%d", &a) != EOF)
//	{
//		printf("%d\n", a);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	//int a = 65;
//	//printf("%c", a);
//
//	//printf("%d", 'A');
//
//	int a=getchar();
//	printf("%d\n", a);
//	printf("%c\n", a);
//	putchar(a);
//	return 0;
//}



//#include<stdio.h>
//int main()
//{
//	char day = 0;
//	scanf("%c", &day);
//	switch (day)
//	{
//	case 'a':
//	case 'b':
//	case 'c':
//	case 'd':
//	case 'e':
//	case 'f':
//		printf("work\n");
//		break;
//	case 'g':
//		printf("sleep\n");
//		break;
//	default:
//		printf("again\n");
//		break;
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	for (int i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0)
//			printf("%d ", i);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//void swap(int* a, int* b)
//{
//	int temp = 0;
//	temp = *a;
//	*a = *b;
//	*b = temp;
//}
//int main()
//{
//	int arr[3];
//	for (int i = 0; i < 3; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	if (arr[0] < arr[1])
//		swap(&arr[0], &arr[1]);
//	if (arr[0] < arr[2])
//		swap(&arr[0], &arr[2]);
//	if(arr[1]<arr[2])
//		swap(&arr[1], &arr[2]);
//
//	printf("%d %d %d", arr[0], arr[1], arr[2]);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i = 0;
//	int j = 0;
//	for ( i = 101; i <= 200; i+=2)
//	{
//		for ( j = 2; j < i; j++)
//		{
//			if (i % j == 0)
//				break;
//		}
//		if(i==j)
//		printf("%d ", i);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i;
//	for (i = 1000; i <= 2000; i++)
//	{
//		if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0))
//			printf("%d ", i);
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a;
//	int b;
//	scanf("%d%d", &a, &b);
//	while (a % b)
//	{
//		int c = a % b;
//		a = b;
//		b = c;
//
//	}
//	printf("%d", b);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int ch = '\0';
//	while ((ch=getchar())!=EOF)
//	{
//		if (ch < '0' || ch>'9')
//			continue;
//		putchar(ch);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)	//按Ctrl z 读取失败，就循环停止
//	{
//		putchar(ch);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	printf("输入密码\n");		//任意输入，无影响。
//	char password[20] = { 0 };  //创建字符数组
//	scanf("%s", password);		//输入函数
//	while (getchar() != '\n')	
//	{
//		;
//	}
//	printf("确认呢（Y/N）\n");
//	int a = getchar();			//再次输入
//	if (a == 'Y')
//		printf("ok");
//	else
//		printf("no");
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//
//	int ch = getchar();
//	char ch1 = 'a';
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int k = 1;
//	int sum = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		k = k * i;
//		sum = sum + k;
//	}
//	printf("%d\n", k);			//计算n的阶乘
//	printf("%d", sum);			//计算n的阶乘之和
//
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,3,5,7,9 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int k = 37;
//	int left = 0;
//	int right = sz - 1;
//	int flag = 0;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > k)
//			right = mid - 1;
//		else if (arr[mid] < k)
//			left = mid + 1;
//		else
//		{
//			flag = 1;
//			printf("%d", mid);
//			break;
//		}
//
//	}
//	if (flag == 0)
//		printf(" ");
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<windows.h>
//#include<stdlib.h>
//int main()
//{
//	char a[] = "chen rui shuai!!!";
//	char b[] = "*****************";
//	int left = 0;
//	int right = strlen(a) - 1;
//	while (left <= right)
//	{
//		b[left] = a[left];
//		b[right] = a[right];
//		left++;
//		right--;
//		printf("%s\n", b);
//		Sleep(700);
//		system("cls");
//	}
//		printf("%s\n", b);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char password[30] = { 0 };
//	for (int i = 0; i < 3; i++)
//	{
//		printf("输入密码\n");
//		scanf("%s", password);
//		if (strcmp(password, "chenrui123") == 0)
//		{
//			printf("ok");
//			break;
//		}
//		else
//			printf("chongshi\n");
//	}
//
//	return 0 ;
//}


//#include<stdio.h>
//#include<stdlib.h>
//#include<time.h>
//
//void menue()
//{
//	printf("*******  1.play   0.exit   *******\n");
//
//}
//
//void game()
//{
//	int i;
//	printf("猜数字游戏哦\n");
//	printf("从一到一百之间猜数字\n");
//	
//	int ret = rand() % 100 + 1;
//	while (1)
//	{
//		scanf("%d", &i);
//		if (i > ret)
//			printf("大了\n");
//		else if (i < ret)
//			printf("小了\n");
//		else
//		{
//			printf("正确\n");
//			break;
//		}
//	}
//
//
//}
//int main()
//{
//	srand((unsigned)time(NULL));
//	int i;
//	do {
//		menue();
//		scanf("%d", &i);
//		switch (i)
//		{
//		case 1:
//			printf("进入游戏\n");
//			game();
//			break;
//		case 0:
//			printf("退出游戏\n");
//			break;
//		default:
//			printf("重试\n");
//			break;
//
//		}
//
//
//	} while (i);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	for (int i = 1; i <= 9; i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			printf("%d*%d=%-2d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//	return 0;
//}

////#include<stdio.h>
//int main()
//{
//	int arr[] = { 2,4,45,64,-234,41,65,-6598,235,-6 };
//	int max = arr[0];
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 1; i < sz; i++)
//	{
//		if (arr[i] > max)
//			max = arr[i];
//	}
//	printf("MAX=%d", max);
//	return 0;
//}



//#include<stdio.h>
//int main()
//{
//	int i = 0;
//	float sum = 0.0f;
//	int k = 1;
//	for (i = 1; i <= 100; i++)
//	{
//		sum = sum + (1.0 / i) * k;
//		k = -k;
//	}
//	printf("sum=%f", sum);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	for (int i = 0; i <= 100; i++)
//	{
//		if (i % 10 == 9)
//			a++;
//		if (i / 10 == 9)
//			a++;
//	}
//	printf("9的个数：%d", a);
//	
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//#include<time.h>
//
//void menue()
//{
//	printf("*******   1.进入   0.退出   *******\n");
//}
//void game()
//{
//	int count;
//	
//	int i = rand() % 300 + 1;
//	while (1)
//	{
//		scanf("%d", &count);
//		if (count > i)
//			printf("大了\n");
//		else if (count < i)
//			printf("小了\n");
//		else
//		{
//			printf("正确\n");
//			break;
//		}
//	}
//
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int i;
//	do {
//		printf("你想玩游戏吗\n");
//		menue();
//		scanf("%d", &i);
//		switch (i)
//		{
//		case 1:
//			printf("猜数字游戏，从一到三百之间猜数字\n");
//			game();
//			break;
//		case 0:
//			printf("再见\n");
//			break;
//		default:
//			printf("重试\n");
//			break;
//		}
//
//	} while (i);
//	return 0;
//}


//#include<stdio.h>
//int search(int arr[], int sz, int k)
//{
//	int left = 0;
//	int right = sz - 1;
//	int flag = 0;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > k)
//			right = mid - 1;
//		else if (arr[mid] < k)
//			left = mid + 1;
//		else
//		{
//			flag = 1;
//			return mid;
//		}
//
//	}
//	if (flag == 0)
//		printf("找不到了\n");
//
//}
//int main()
//{
//	int arr[] = { 3,5,7,9,23,37,45,66,88,97 };
//	int k = 37;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int m=search(arr, sz,k);
//	printf("下标是：%d", m);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[] = { 65 };
//	printf("%c", arr[0]);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int* p = &a;	 //将a的地址存在p
//	printf("%d", *p);//*是解引用操作符
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	printf("%d\n", sizeof(int*));
//	printf("%d\n", sizeof(char*));
//	printf("%d\n", sizeof(short*));
//	printf("%d\n", sizeof(float*));
//	printf("%d\n", sizeof(double*));
//
//	return 0;
//}

//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    int n;
//    printf("x=");
//    scanf("%d", &n);
//    int m = sqrt(n);
//    printf("%d", m);
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	/*char arr[] = { '9',54 };
//	char brr[] = "54";
//	printf("%d\n", '\130');
//	printf("%c\n", '\130');
//	printf("%c\n", arr[0]);
//	printf("%c\n", arr[1]);
//	printf("%c",brr);*/
//
//	printf("%d\n", printf("%d\n", 3));
//
//	return 0;
//}

//#include <stdio.h>

//int main()
//{
//    int a;
//    double b, c, d;
//    scanf("%d;%lf,%lf,%lf", &a, &b, &c, &d);
//    printf("The each subject score of No. %d is %.2lf, %.2lf, %.2lf.", a, b, c, d);
//
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	double a;
//	scanf("%lf", &a);
//	printf("%.2lf", a);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	an:
//	printf("sh\n");
//	goto an;
//	return 0;
//}

//#include<stdio.h>
//#include<windows.h>
//#include<stdlib.h>
//int main()
//{
//	/*char arr[] = "chenrui!!!";
//	memset(arr, '*',4);
//	printf("%s", arr);*/
//
//	char arr1[] = "你们三个傻逼嘻嘻哈哈";
//	char arr2[] = "@@@@@@@@@@@@@@@@@@@@";
//	int left = 0;
//	int right = strlen(arr1)-1;
//	while (left <= right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		left++;
//		right--;
//		printf("%s\n", arr2);
//		Sleep(700);
//		system("cls");
//	}
//	printf("%s\n", arr2);
//
//	return 0;
//}

//#include<stdio.h>
//void swap(int* x, int* y)
//{
//	int temp = *x;
//	*x = *y;
//	*y = temp;
//
//}
//int main()
//{
//	int a, b;
//	scanf("%d%d", &a, &b);
//	swap(&a, &b);
//	printf("%d %d", a, b);
//	return 0;
//}


//#include<stdio.h>
//
//int is_leap_year(int y)
//{
//	if ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0))
//		return 1;
//
//}
//
//int main()
//{
//	int y = 0;
//	for (y = 1000; y <= 2000; y++)
//	{
//		//判断y是否为闰年
//		//如果是闰年返回1
//		//不是闰年返回0
//		if (is_leap_year(y)==1)
//		{
//			printf("%d ", y);
//		}
//	}
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//int main()
//{
//	char arr[20];
//	system("shutdown -s -t 60");
//	while (1)
//	{
//		printf("请输入陈瑞是我爹,否则你的电脑将一分钟之后关机\n");
//		scanf("%s", arr);
//		if (strcmp(arr, "陈瑞是我爹") == 0)
//		{
//			system("shutdown -a");
//			break;
//		}
//
//	}
//
//	return 0;
//}


//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr1[] = "chenrui";
//	char arr2[] = "############";
//	strcpy(arr2, arr1);
//	printf("%s\n", arr2);
//	printf("%s\n", arr1);
//
//	return 0;
//}

//#include<stdio.h>
//#include<math.h>
//int Wheather(int x)
//{
//	for (int i = 2; i <= sqrt(x); i++)
//	{
//		if (x % i == 0)
//			return -1;
//	}
//	return x;
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	int ret = Wheather(n);
//	if (ret == -1)
//		printf("不是\n");
//	else
//		printf("是素数:%d", ret);
//	return 0;
//}

//#include<stdio.h>
//#include<math.h>
//int  Wheather(int x)
//{
//	for (int i = 2; i <= sqrt(x); i++)
//	{
//		if (x % i == 0)
//			return -1;
//
//	}
//	return x;
//}
//int main()
//{
//	int count = 0;
//	for (int i = 100; i <= 200; i++)
//	{
//		int ret = Wheather(i);
//		if (ret != -1)
//		{
//			printf("%d ", ret);
//			count++ ;
//		}
//
//	}
//	printf("\n count=%d",count);
//	return 0;
//}

//#include<stdio.h>
//int Search(int* arr,int k, int sz)
//{
//	int left = 0;
//	int right = k - 1;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > k)
//			right = mid - 1;
//		else if (arr[mid] < k)
//			left = mid + 1;
//		else
//			return mid;
//
//	}
//	return -1;
//}
//
//int main()
//{
//	int arr[] = { 1,3,5,7,9,11,13,21,23,37,53,67 };
//	int k =0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int ret = Search(arr, k, sz);
//	if (ret != -1)
//		printf("下标是：%d", ret);
//	else
//		printf("找不到\n");
//	return 0;
//}


//#include<stdio.h>
//void print(int n)
//{
//	int i = 1;
//	for (i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			printf("%-2d*%-2d=%-3d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//
//	return 0;
//}

//#include<stdio.h>
//void swap(int* x, int* y)
//{
//	int temp = *x;
//	*x = *y;
//	*y = temp;
//}
//
//int main()
//{
//	int a, b;
//	scanf("%d%d", &a, &b);
//	swap(&a, &b);
//	printf("%d %d", a, b);
//	return 0;
//}

//#include<stdio.h>
//int Wheather(int y)
//{
//	if ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0))
//		return y;
//	else
//		return 0;
//}
//int main()
//{
//	int year;
//	scanf("%d", &year);
//	Wheather(year);
//	if (Wheather(year) != 0)
//		printf("是闰年：%d", Wheather(year));
//	else
//		printf("不是闰年");
//	return 0;
//}


//#include<stdio.h>
//#include<math.h>
//int Wheather(int n)
//{
//	for (int j = 2; j <= sqrt(n); j++)
//	{
//		if (n % j == 0)
//			return -1;
//	}
//	return n;
//}
//int main()
//{
//	int count = 0;
//	for (int i = 100; i <= 200; i++)
//	{
//		Wheather(i);
//		if (Wheather(i) != -1)
//		{
//			printf("%d ", Wheather(i));
//			count++;
//		}
//	}
//	printf("\n count=%d", count);
//	return 0;
//}

//#include<stdio.h>
//int add(int x)
//{
//	return ++x;
//}
//int main()
//{
//	int a = 0;
//	int ret = 0;
//	ret = add(a);
//	printf("%d", ret);
//
//	return 0;
//}

//#include<stdio.h>
//int a = 3;
//int b = 5;
//
//void swap(int a, int b)
//{
//	int temp = a;
//	a = b; 
//	b = temp;
//
//}
//int main()
//{
//	printf("%d %d\n", a, b);
//	swap(a, b);
//	printf("%d %d", a, b);
//	return 0;
//}

//#include<stdio.h>
//int x = 0;
//int y = 0;
//void swap()
//{
//	int tmp = x;
//	x = y;
//	y = tmp;
//}
//int main()
//{
//	scanf("%d %d", &x, &y);
//	swap();
//	printf("%d,%d\n", x, y);
//	return 0;
//}


//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//int main()
//{
//	char arr[20];
//	system("shutdown -s -t 60");
//	while (1)
//	{
//		printf("请输入徐焕是我大爷,否则你的电脑将一分钟之后关机\n");
//		scanf("%s", arr);
//		if (strcmp(arr, "徐焕是我大爷") == 0)
//		{
//			system("shutdown -a");
//			break;
//		}
//
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3 };
//	
//	return 0;
//}
//

//#include<stdio.h>
//int main()
//{
//	int a;
//	int b;
//	int c;
//	int ret = scanf("%d%d%d", &a, &b,&c);
//	printf("%d", ret);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	printf("%u", a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[10] = "abcdef";
//	int sz = sizeof(arr) / sizeof(arr[1]);
//	printf("%d", sz);				//sz = 10
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3 };
//	char brr[] = "abc";
//	return 0;
//}


//#include<stdio.h>
//void hanoi(int n, char x, char y, char z)
//{
//	if (n == 1)
//		printf("%c->%c\n", x, z);
//	else
//	{
//		hanoi(n - 1, x, z, y);
//		printf("%c->%c\n", x, z);
//		hanoi(n - 1, y, x, z);
//	}
//
//}
//int main()
//{
//	printf("汉诺塔，请输入铁盘个数\n");
//	int n;
//	while(scanf("%d", &n)!=EOF)
//	{
//		if (n > 0)
//			hanoi(n, 'A', 'B', 'C');
//		else
//		{
//			printf("6");
//			break;
//		}
//	}
//	return 0;
//}
//


//#include<stdio.h>
//Fibon(int x)
//{
//	if (x <= 2)
//		return 1;
//	else
//		return Fibon(x - 1) + Fibon(x - 2);
//
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Fibon(n);
//	printf("%d", Fibon(n));
//	return 0;
//}

//#include<stdio.h>
//ci_fang(int n, int k)
//{
//	if (k == 1)
//		return n;
//	else 
//		return ci_fang(n, k - 1) * n;
//}
//
//int main()
//{
//	int n, k;
//	scanf("%d%d", &n, &k);
//	ci_fang(n, k);
//	printf("%d", ci_fang(n, k));
//	return 0;
//}

//#include<stdio.h>
//DigitSum(int n)
//{
//	if (n < 10)
//		return n;
//	else
//		return DigitSum(n / 10) + n % 10;
//}
//int main()
//{
//	int x;
//	scanf("%d", &x);
//	DigitSum(x);
//	printf("%d", DigitSum(x));
//	return 0;
//}

//#include<stdio.h>
//my_strlen(char* p)
//{
//	int count = 0;
//	while (*p != '\0')
//	{
//		p++;
//		count++;
//	}
//	return count;
//}

//#include<stdio.h>
//my_strlen(char* p)
//{
//	if (*p == '\0')
//		return 0;
//	else
//		return my_strlen(p + 1) + 1;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	my_strlen(arr);
//	printf("%d", my_strlen(arr));
//	return 0;
//}


//int Chen(int n)
//{
//	int ret = 1;
//	for (int i = 1; i <= n; i++)
//	{
//		ret = i * ret;
//	}
//	return ret;
//}

//#include<stdio.h>
//int Chen(int n)
//{
//	if (n == 1)
//		return 1;
//	else
//		return Chen(n - 1) * n;
//
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Chen(n);
//	printf("%d", Chen(n));
//	return 0;
//}


//#include<stdio.h>.
//void Print(int n)
//{
//	if (n < 10)
//		printf("%d ", n % 10);
//	else
//	{
//		Print(n / 10);
//		printf("%d ", n % 10);
//	}
//
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	Print(n);
//	return 0;
//}

//#include<stdio.h>
//void swap(char* x, char* y)
//{
//	char temp = *x;
//	*x = *y;
//	*y = temp;
//}
//int my_strlen(char* p)
//{
//	if (*p == '\0')
//		return 0;
//	else
//		return my_strlen(p + 1) + 1;
//}
//void reverse_string(char* arr)
//{
//	int len = my_strlen(arr);
//	int left = 0;
//	int right = len - 1;
//	while (left < right)
//	{
//		swap(&arr[left], &arr[right]);
//		left++;
//		right--;
//	}
//	printf("%s", arr);
//}
//int main()
//{
//	char arr[] = "abcdefg";
//	reverse_string(arr);
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//void reverse_string(char* arr)
//{
//	int len = strlen(arr);
//	int temp = *arr;
//	*arr = *(arr + len - 1);
//	*(arr + len - 1) = '\0';
//	if(strlen(arr+1)>1)
//	{
//		reverse_string(arr + 1);
//		
//	}
//	*(arr + len - 1) = temp;
//	
//}
//int main()
//{
//	char brr[] = "abcd";
//	reverse_string(brr);
//	printf("%s", brr);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//    /*char str[] = "hello bit";
//    printf("%d %d\n", sizeof(str), strlen(str));*/
//    char acY[] = { 'a','b','c','d','e','f','g'};
//    printf("%d", sizeof(acY));
//    return 0;
//}

//#include<stdio.h>
//void swap(int* brr1, int* brr2)
//{
//	int arr[4];
//	int i = 0;
//	for ( i = 0; i < 4; i++)
//	{
//		arr[i] = brr1[i];
//		brr1[i] = brr2[i];
//		brr2[i] = arr[i];
//	}
//}
//int main()
//{
//	int arr1[] = { 1,2,3,4 };
//	int arr2[] = { 5,6,7,8 };
//	swap(arr1, arr2);
//	for (int i = 0; i < 4; i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	printf("\n");
//	for (int i = 0; i < 4; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a, b;
//	while(1)
//	{
//		scanf("%d%d", &a, &b);
//		printf("%d %d", a, b);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//void init(int* arr ,int sum)
//{
//	for (int i = 0; i < sum; i++)
//	{
//		arr[i] = 0;
//	}
//
//}
//
//void print(int* arr, int sum)
//{
//	for (int i = 0; i < sum; i++)
//	{
//		printf("%d ", arr[i]);
//
//	}
//
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print(arr, sz);
//	init(arr,sz);
//
//	return 0;
//}

//#include<stdio.h>
//void reverse(int* arr, int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	while (left < right)
//	{
//		int temp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = temp;
//		left++;
//		right--;
//
//	}
//
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	reverse(arr, len);
//	for (int i = 0; i < len; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//#include<stdio.h>
//void Maopao(int* arr, int sz)
//{
//	int i, j;
//	for (j = 0; j < sz - 1; j++)
//	{
//		for (i = 0; i < sz - 1; i++)
//		{
//			if (arr[i] > arr[i + 1])
//			{
//				int temp = arr[i];
//				arr[i] = arr[i + 1];
//				arr[i + 1] = temp;
//			}
//		}
//	}
//
//}
//int main()
//{
//	int arr[] = { 5,3,6,8,1,0,2,7,9 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	Maopao(arr, sz);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}


//#include"add.h"
//
//void menue()
//{
//	printf("*******   1.play   0.exit   *******\n");
//}
//
//void game()
//{
//	char board[H][L];//创建一个是三行三列的二维数组
//	init(board, H, L);//初始化数组
//	print_board(board, H, L);//打印棋盘
//	while (1)
//	{
//		char ret = 0;//定义一个变量接收is_win函数返回值
//		p_move(board, H, L);//玩家下棋
//		print_board(board, H, L);//打印棋盘
//		//system("cls");
//		is_win(board, H, L);//判断输赢
//		ret= is_win(board, H, L);
//		if (ret == 'X')  //判断返回值
//		{
//			printf("恭喜你，赢得比赛\n");
//			break;
//		}
//		if (ret =='1')//因为玩家先下棋，最后一步也是玩家下
//		{
//			printf("平局\n");
//			break;
//		}
//		c_move(board, H, L);//电脑下棋
//		print_board(board, H, L);//打印棋盘
//		is_win(board, H, L);//判断输赢
//		ret = is_win(board, H, L);
//		if (ret == '*')
//		{
//			printf("很遗憾，你输了\n");
//			break;
//		}
//	}
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int i;//创建变量供输入
//	do {
//		menue();//创建菜单供选择
//		scanf("%d", &i);
//		switch (i)
//		{
//		case 1:
//			printf("三子棋游戏\n");
//			game();//一个game名称的函数包装进行游戏的实现
//			break;
//		case 0:
//			printf("再见\n");
//			break;
//		default:
//			printf("输入错误，请重新输入\n");
//			break;
//		}
//
//	} while (i);
//
//	return 0;
//}

#include"add.h"

//void menue()
//{
//	printf("***********************************\n");
//	printf("*******   1.play   0.exit   *******\n");
//	printf("***********************************\n");
//}
//void game()
//{
//	char arr[hs][ls];//创建一个二维数组储存雷的信息
//	char show[hs][ls];//创建另一个数组展示出来供用户排查
//	init(arr, hs, ls,'0');//初始化数组
//	init(show, hs, ls,'*');//初始化数组
//	Print_board(show, h, l);//将要展示出来的数组打印出来
//	put_lei(arr, h, l);//布置雷
//	Find(arr, show, h, l);//排查雷
//
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int i;
//	do {
//		menue();
//		scanf("%d", &i);
//		switch (i)
//		{
//		case 0:
//			printf("退出游戏\n");
//			break;
//		case 1:
//			printf("扫雷游戏\n");
//		game();
//			break;
//		default:
//			printf("输入错误，请重新输入\n");
//			break;
//
//		}
//
//	} while (i);
//
//	return 0;
//}


//int x = 5, y = 7;//这里的全局变量x y只是与下面的局部变量x y撞名了可看成a b
//void swap()
//{
//	int z;
//	z = x;
//	x = y;	//这里是全局变量的x y也可看成a b
//	y = z;
//} 
//int main()
//{
//	int x = 3, y = 8;//已经有了局部变量x y出了作用域就销毁了。
//	swap();
//	printf("%d,%d\n",x,y);
//	return 0;
//}

//int main()
//{
//	char c2[] = { '\x10', '\xa', '\8','\0'};
//	double x[5] = { 2.0, 4.0, 6.0, 8.0, 10.0 };
//	int y[5 + 3] = { 0, 1, 3, 5, 7, 9 };
//	char c1[] = { '1','2','3','4','5',0 };
//	char c3[] = { 1,2,3,0,8 };
//	printf("%s", c1);
//}

//#define INT_PTR int*
//typedef int* int_ptr;
//#include<stdio.h>
//int mian()
//{
//	int* e, f;
//	INT_PTR a, b;
//	int_ptr c, d;
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10, b = 20;
//	 int* const p = &a;
//	*p = b;
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a[10];
//	scanf("%s", a);
//	printf(" %s",&a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//    int a;
//    scanf("%d", &a);
//    int ret = 1;
//    for (int i = 0; i < a; i++)
//    {
//        ret = ret * 10;
//    }
//    for (int j = 1; j < ret; j++)
//    {
//        printf("%d ", j);
//    }
//}

///*static*/ int a = 1;
//#include<stdio.h>
//int main()
//{
//	a++;
//	printf("%d\n", a);
//	a++;
//	printf("%d", a);
//
//}

//#include<stdio.h>
//
//int main()
//{
//	int a, b, c;
//	int ret = 0;
//	scanf("%d%d%d", &a, &b, &c);
//	if (((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0))
//	{
//		int arr1[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
//		for (int i = 0; i < b-1; i++)
//		{
//			ret = ret + arr1[i];
//		}
//		printf("%d", ret + c);
//	}
//	else
//	{
//		int arr2[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//		for (int i = 0; i < b-1; i++)
//		{
//			ret = ret + arr2[i];
//		}
//		printf("%d", ret + c);
//	}
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	char s[] = "\\123456\123456\t";
//	printf("%d\n", strlen(s));
//	printf("%s", s);
//	return 0;
//}

//#include<stdio.h>
//#define N 2
//#define M N + 1
//#define NUM (M + 1) * M / 2
//int main()
//{
//	printf("%d\n", NUM);
//	return 0;
//}
 

//#include<stdio.h>
//int f(int n)
//{
//	static int i = 1;
//	if (n >= 5)
//		return n;
//	n = n + i;
//	i++;
//	return f(n);
//}
//int main()
//{
//	int n = 1;
//	int c = f(1);
//	printf("%d", c);
//}

//#include<stdio.h>
//struct book
//{
//	char b;
//};
//int main()
//{
//	struct book m = {"活"};
//	printf("%d", sizeof(m));
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[] = {1,2,3,4};
//	printf("%d", sizeof(arr));
//}

//#include<stdio.h>
//int main()
//{
//	char ch = '\0';
//	while ((ch=getchar()) != EOF)
//	{
//		if (ch < '0' || ch>'9')
//			continue;
//		putchar(ch);
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a[12] = "hello,world";
//	char b[12];
//	//b = "hello,world";
//
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	double a = 0;
//	if (a == 0.0)
//		printf("ok\n");
//	else
//		printf("no\n");
//	return 0;
//}

//#include<stdio.h>
//struct X { double n; short s; int i; char c; };
//
//int main()
//{
//	double n; short s; int i; char c;
//	struct X b = {1,2,3,7};
//	int a=sizeof(b);//24
//	int m = sizeof(s) + sizeof(i) + sizeof(c) + sizeof(n);//15
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//    int a;
//    scanf("%d", &a);
//    for (int i = (a * (a - 1) + 1);i <= (a * (a + 1) - 1); i += 2)
//    {
//        printf("%d", i);
//        if (i <= a * (a + 1) - 1 - 2)
//            printf("+");
//    }
//
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 1, b = 2;
//	int const* c = 21;//常量指针
//	const int* d = &a;//常量指针
//	int* const e = &b;//指针常量
//	int const* const f = &a;//常变量
//	return 0;
//}

//#include <stdio.h>
//int i;
//void prt()
//{
//	for (i = 5; i < 8; i++)
//		printf("%c", '*');
//	printf("\t");
//} 
//int main()
//{
//	for (i = 5; i <= 9; i++)//这里改成9
//		prt();
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	for (; 1;)
//	{
//		printf("1");
//	}
//}

//#include<stdio.h>
//int x = 5, y = 7;
//void swap()
//{
//	int x = 3, y = 8;
//	int z;
//	z = x;
//	x = y;
//	y = z;
//}
//int main()
//{
//	swap();
//	printf("%d,%d\n",x,y);
//	return 0;
//}


//int main()
//{
//    int a, b;
//    int ret = 0, c = 0, d = 0;
//    scanf("%d", &a);
//    for (int i = 0; i < a; i++)
//    {
//        scanf("%d", &b);
//        if (b < 0)
//        {
//            c++;
//        }
//        else if (b > 0)
//        {
//            d++;
//        }
//        ret = ret + b;
//    }
//    if (d != 0)
//    {
//        printf("%d %.1f", c, (ret * 1.0) / d);
//    }
//    else
//        printf("%d %d",c ,0);
//    return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int m, n;
//	printf("Enter m,n;");
//	scanf("%d%d", &m, &n);
//	while (m != n) //1
//	{
//		while (m > n) m = m - n; //2
//		while (n > m) n = n - m; //3
//	}
//	printf("m=%d\n", m);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char c;
//	int v0 = 0, v1 = 0, v2 = 0;
//		do
//		{
//			switch (c = getchar())
//			{
//			case'a':case'A':
//			case'e':case'E':
//			case'i':case'I':
//			case'o':case'O':
//			case'u':case'U':v1 += 1;
//			default:v0 += 1; v2 += 1;
//			}
//		} while (c != '\n');
//		printf("v0=%d,v1=%d,v2=%d\n", v0, v1, v2);
//		return 0;
//}

//#include <stdio.h>
//#include<string.h>
//int main()
//{
//    int i, j, n = 0;
//    int a=0, b=0, c = 0;
//    char arr[100];
//    scanf("%d", &i);
//    for (j = 0; j < i; j++)
//    {
//        scanf("%s", arr);
//        int len = strlen(arr);
//        if (len < 8)
//        {
//            printf("NO\n");
//            continue;
//        }
//        if (arr[0] >= '0' && arr[0] <= '9')
//        {
//            printf("NO\n");
//            continue;
//        }
//        for (n = 0; n < len; n++)
//        {
//            if ((arr[n] >= 'a' && arr[n] <= 'z') || (arr[n] >= 'A' && arr[n] <= 'Z') || (arr[n] >= '0' && arr[n] <= '9'))
//            {
//                continue;
//            }
//            else {
//                printf("NO\n");
//					break;
//            }
//
//        }
//        if (n == len)
//        {
//            goto again;
//        }
//    again:
//        for (n = 0; n < len; n++)
//        {
//            if (arr[n] >= 'a' && arr[n] <= 'z')
//            {
//                a++;
//            }
//            if (arr[n] >= 'A' && arr[n] <= 'Z')
//            {
//                b++;
//            }
//            if (arr[n] >= '0' && arr[n] <= '9')
//            {
//                c++;
//            }
//        }
//        if (a > 0 && b > 0 && c == 0)
//        {
//            printf("YES\n");
//        }
//        if (a > 0 && b > 0 && c > 0)
//        {
//            printf("YES\n");
//        }
//        if (a > 0 && c > 0 && b > 0)
//        {
//            printf("YES\n");
//        }
//        if (a > 0 && c > 0 && b == 0)
//        {
//            printf("YES\n");
//        }
//        if (b > 0 && c > 0 && a == 0)
//        {
//            printf("YES\n");
//        }
//        if (b > 0 && c > 0 && a > 0)
//        {
//            printf("YES\n");
//        }
//        else if (a == 0 && b == 0)
//        {
//            printf("NO\n");
//        }
//        else if (a == 0 && c == 0)
//        {
//            printf("NO\n");
//        }
//        else if (c == 0 && b == 0)
//        {
//            printf("NO\n");
//        }
//    }
//
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[10] = "abc";
//	int len=strlen(arr);//3
//	 int sum=sizeof(arr) / sizeof(arr[0]);//10
//	int arr1[10];
//	int ret = sizeof(arr1) / sizeof(arr1[0]);//10
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	char ch[80] = "123abcdEFG*&";
//	int j;
//	puts(ch);
//	for (j = 0; ch[j] != '\0'; j++)
//		if (ch[j] >= 'A' && ch[j] <= 'Z')
//			ch[j] = ch[j] + 'e' - 'E';
//	puts(ch);
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int t= 0;
//	while (printf("*"))
//	{
//		t++;
//		if (t < 3)
//			break;
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char ch;
//	while ((ch = getchar()) != '\n')
//	{
//		if (ch % 2 != 0 && (ch >= 'a' && ch <= 'z'))
//			ch = ch - 'a' + 'A';
//		putchar(ch);
//	}
//	printf("\n");
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int a = 1;
//	printf("%d\n", a++);//后置++,先使用后++
//	printf("%d\n", a);
//	printf("%d\n", a += 1);//赋值操作
//	printf("%d\n", a);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	unsigned int a = -1 ^ 2;
//	printf("%d", a);
//	return 0;
//}

//#include<stdio.h>
//void fun(char ch, float x[]);
//{
//
//}
//int main()
//{
//	/*int a = 1;
//	if ( a++<5)
//		printf("i");*/
//
//	float a[10];
//	fun(32, a);
//
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	char str[] = "ab";
//	print(str);
//	return 0;
//}
//print(char* s)
//{
//	if (*s)
//	{
//		print(++s);
//		printf("%c", *s);//‘\0’
//	}
//
//}

//#include<stdio.h>
//int fun(int x)
//{
//	return (x == 1) ? 1 : (x + fun(x - 1));
//}
//int main()
//{
//	int a=fun(10);
//	return 0;
//}

//#include <stdio.h>
//#include<string.h>
//
//void swap(char* m, char* n)
//{
//    int temp = *m;
//    *m = *n;
//    *n = temp;
//}
//void puble(char* arr)
//{
//    int i, j;
//    int len = strlen(arr);
//    for (i = 0; i < len-1; i++)
//    {
//        for (j = 0; j < len - i-1; j++)
//        {
//            if (arr[j] > arr[j + 1])
//                swap(&arr[j], &arr[j + 1]);
//        }
//    }
//}
//int main()
//{
//    char arr[] = { 0 };
//    scanf("%s", arr);
//    puble(arr);
//    printf("%s", arr);
//    return 0;
//}


//#include<stdio.h>
//int main()
//{
//	char c[5] = { 1, 'b', '\0', 'c', '\0' };
//	char a[] = {97,98,99,100,101,0};
//	printf("%s\n", c);
//	printf("%s", a);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	//int a[2][3] = { 1,2,3,4,5,6 };
//	//int m=a[1 > 2][1];
//
//	//char a[] = "x+y=5.";
//
//	int num['10'] = { 0 };
//	int a = '10';
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[2][3] = { 1,2,3,4,5,6 };
//	int a = *(arr[1] + 2);
//	int m=arr[1];
//	return 0;
//}

//#include <stdio.h>
//#include<string.h>
//
//int main()
//{
//    int i, j, count = 0;;
//    char arr[500];
//    scanf("%s", arr);
//    int len = strlen(arr);
//    for (i = 0; i < len; i++)
//    {
//        for (j = i + 1; j < len; j++)
//        {
//            if (arr[i] == arr[j])
//                arr[i] = -1;
//        }
//    }
//    for (i = 0; i < len; i++)
//    {
//        if (arr[i] >= 0)
//            count++;
//    }
//    printf("%d", count);
//    return 0;
//}

//#include<stdio.h>
//int majorityElement(int* nums, int numsSize) {
//
//    int i, j;
//    for (i = 0; i < numsSize; i++)
//    {
//        int count = 1;
//        if (nums[i] > 0)
//        {
//            for (j = i + 1; j < numsSize; j++)
//            {
//                if (nums[i] = nums[j])
//                    nums[j] = -1;
//                count++;
//            }
//            if (count > numsSize / 2)
//                return count;
//        }
//    }
//
//}


//#include<stdio.h>
//
//int majorityElement(int* nums, int numsSize) {
//    int arr[3] = { 0 };
//    int i, j;
//    for (i = 0; i < numsSize; i++)
//    {
//        arr[i] = nums[i];
//    }
//    for (i = 0; i < numsSize - 1; i++)
//    {
//        int count = 1;
//        if (nums[i] > 0)
//        {
//            for (j = i + 1; j < numsSize; j++)
//            {
//                if (nums[i] == nums[j])
//                {
//                    nums[j] = -1;
//                    count++;
//                }
//            }
//            if (count > numsSize / 2)
//                break;
//        }
//    }
//    return arr[i];
//}
//int main()
//{
//    int arr[] = { 6,5,5 };
//    int len = 3;
//    int k = majorityElement(arr, len);
//
//    return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int a[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 }, * p[4], i;
//	for (i = 0; i < 4; i++)
//		p[i] = &a[i * 3];
//	printf("%d\n",p[3][2]);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = sizeof(double*);
//	int b = sizeof(char*);
//
//	return 0;
//}

//int main()
//{
//	char a = 'a', b;
//	printf("%c,", ++a);
//	printf("%c,", b = a++);//先赋值操作，后执行++操作。--> b=a;a++;
//	printf("%c\n",a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int x = 0;
//	(x= 4 * 5, x * 5), x + 5;//先赋值新20.第一个表达式计算后等价于100，20+5。
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[3];//初始化的时候不能用变量
//	int n = 1;
//	arr[n] = 0;
//	return 0;
//}

//#include<stdio.h>
//int func(int x)
//{
//	int count = 0;
//	while (x)
//	{
//		count++;
//		x = x & (x - 1);//与运算
//	} return count;
//}
//int main()
//{
//	int a=func(-1);
//	printf("%d", a);
//}

//#include<stdio.h>
//int main()
//{
//	/*int count = 0;
//	int x = -1;
//	while (x)
//	{
//		count++;
//		x = x >> 1;
//	}
//	printf("%d", count);*/
//	int a;
//	 a = a < a + 1;
//
//	printf("%d", a);
//
//}
//#include<stdio.h>
//int main()
//{
//	/*int a = 1, b = 2, m = 0, n = 0, k;
//	k = (n = b < a) && (m = a);
//	printf("%d,%d\n", k, m);*/
//
//	/*int m = 0;
//	printf("%d\n", 1 && (m = 1));
//	printf("%d", m);*/
//
//	double a = 5 % 2;
//	printf("%lf", a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	/*char a = 'a';
//	char b = 'b';*/
//
//	int a = 3;
//	float b = 3.14;
//	printf("%f\n", a + b);
//	printf("%f\n", 1 / 3);
//	printf("%f\n", 1 / 3.0);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	//int a = 1;
//	//int b = a += 3;//从右到左
//	//int c = (a++);
//	//char ch[10] = { 0 };
//	//printf("%d", strlen(ch));
//
//	//int a = -8;
//	//int b = a >> 2;
//	//printf("%d", b);
//
//	int a = 1, b = 1;
//	printf("%d", a++ + b);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 3, b = 7;
//	b = a + b;//求和
//	a = b - a;
//	b = b - a;
//	printf("%d %d", a, b);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = -3, b = 7;
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("%d %d", a, b);
//
//	return 0;
//}

//#include<stdio.h>
//void print(int a)
//{
//	int i;
//	for (i = 0; i < 32; i += 2)
//	{
//		printf("%d ", (a >> i) & 1);
//	}
//	printf("\t偶数位\n");
//	for (i = 1; i < 32; i += 2)
//	{
//		printf("%d ", (a >> i) & 1);
//	}
//	printf("\t奇数位\n");
//
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	print(n);
//
//	return 0;
//}

//#include<stdio.h>
//int Differ(int x, int y)
//{
//    int i, count = 0;
//    for (i = 0; i < 32; i++)
//    {
//        if (((1 & x >> i) ^ (1 & y >> i)) == 1)
//            count++;
//    }
//    return count;
//}
//int main()
//{
//    int a, b;
//    scanf("%d%d", &a, &b);
//    int ret = Differ(a, b);
//    printf("%d", ret);
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a = 0;
//	char b = 1;
//	char c = a + b;
//	printf("%d\n", a);
//	printf("%d", c);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int m = 3, i = 0, j = 1;
//	for (i = 31; i >= 0; i--)
//	{
//		printf("%d ", m >> i & j);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int m = 3, i = 0, j = 1;
//	for (i = 31; i >= 0; i--)
//	{
//		j = 1;
//		j = j << i;
//		printf("%d ", m & j);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	float b = 3.14f;
//	int a = b;
//	printf("%f", a + b);
//	return 0;
//
//}

//#include<stdio.h>
//int main()
//{
//	int a = 3;
//	int b = -5;
//	int c = a | b;
//	//00000000 00000000 00000000 00000011    3的补码
//	//11111111 11111111 11111111 11111011   -5的补码
//	//11111111 11111111 11111111 11111011	按位或之后，补码
//	//11111111 11111111 11111111 11111010	反码
//	//10000000 00000000 00000000 00000101	原码
//	printf("%d", c);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 0;//初始化
//	a = 10;//重新赋值
//	printf("%d", a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int arr[3] = { 1,2,3 };
//	char brr[] = "abc";
//	printf("%d\n", sizeof(a));//计算一个整型大小
//	printf("%d\n", sizeof(arr));//计算一个数组所占字节大小
//	printf("%d\n", sizeof(brr));//别忘了'\0'
//	return 0;
//}

//#include<stdio.h>
//void test(int* p)
//{
//	p[0] = 1;
//	p[1] = 2;
//
//}
//int main()
//{
//	//int a = 10;
//	//int b = --a;//前置--，先--后使用。
//	//printf("%d %d", a, b);
//
//	int arr[2] = { 0,0 };
//	test(arr);
//	printf("%d\n", arr[0]);
//	printf("%d", arr[1]);
//	
//	return 0;
//}

//#include <stdio.h>
//int i;
//int main()
//{
//    i--;
//    if (i > sizeof(i))
//    {
//        printf(">\n");
//    }
//    else
//    {
//        printf("<\n");
//    }
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a, b;
//	scanf("%d %d", &a, &b);
//	printf("%d %d", a, b);
//}

//#include <stdio.h>
//#include<stdlib.h>
//int main()
//{
//    int a, b;
//    scanf("%d%d", &a, &b);
//    int* arr = (int*)malloc(sizeof(int) * 20000);
//    for (int i = 0; i < a + b; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//    for (int n = 0; n < a + b -1; n++)
//    {
//        for (int j = 0; j < a + b - 1 - n; j++)
//        {
//            if (arr[j] > arr[j + 1])
//            {
//                int tem = arr[j];
//                arr[j] = arr[j + 1];
//                arr[j + 1] = tem;
//            }
//        }
//    }
//    for (int k = 0; k < a + b; k++)
//    {
//        printf("%d ", arr[k]);
//    }
//        free(arr);
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[10] = {0};
//	char* p = &arr;//char 类型指针
//	for (int j = 0; j < 10; j++)
//	{
//		*p = j;
//		p+=4;	//指针+4
//	}
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d", arr[i]);
//
//	}
//	return 0;
//}

//#include <stdio.h>
//
//int  LilyNumber(int x)
//{
//    int sum = 0;
//    for (int i = 10; i <= 10000; i *= 10)
//    {
//        sum = sum + (x / i) * (x % i);
//    }
//    if (sum == x)
//        return x;
//    return 0;
//
//}
//int main()
//{
//    int i;
//    for (i = 10000; i < 100000; i++)
//    {
//        int ret = LilyNumber(i);
//        if (ret > 0)
//            printf("%d ", ret);
//
//    }
//
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a = 3;//char类型只能存1个字节（8比特位）
//	//00000011   -》3的二进制补码
//	char b = 125;
//	//01111101	 -》125的二进制补码
//	char c = a + b;//a与b进行加法计算，发生整型提升
//	//00000000 00000000 00000000 00000011	-》3整型提升
//	//00000000 00000000 00000000 01111101	-》125整型提升
//	//相加：					 10000000	-》char类型存储
//
//	printf("%d", c);//%d是对整型进行打印
//	//整型提升：11111111 11111111 11111111 10000000	-》这里是补码
//	//打印出来的是原码：10000000 00000000 00000000 10000000	-》-128
//
//	return 0; 
//}

//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3 };
//	printf("%p\n", &arr[0]);
//	printf("%p\n", &arr[0]+1);
//	printf("%p\n", &arr);
//	printf("%p\n", &arr+1);
//
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int arr[] = { 1,2,3,4,5 };
//    short* p = (short*)arr;
//    int i = 0;
//    for (i = 0; i < 4; i++)
//    {
//        *(p + i) = 0;
//    }
//
//    for (i = 0; i < 5; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int a = 0x11223344;
//    char* pc = (char*)&a;
//    *pc = 0;
//    printf("%x\n", a);
//    return 0;
//}

//#include<stdio.h>
//void Print(int* p,int m)
//{
//	for (int i = 0; i < m; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//}
//int main()
//{
//	int arr[5] = { 1,2,3,4,5 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	Print(arr,sz);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i, j, k;
//	for (j = 0; j < 6; j++)
//	{
//		for (i = 0; i < 6 - j; i++)
//		{
//			printf(" ");
//		}
//		for (k = 0; k < 2*j + 1; k++)
//		{
//			printf("*");
//		}
//		printf("\n");
//			
//		
//	}
//	for (j = 0; j < 13; j++)
//		printf("*");
//	printf("\n");
//	
//	for (j = 5; j >= 0; j--)
//	{
//		for (i = 0; i < 6 - j; i++)
//		{
//			printf(" ");
//		}
//		for (k = 0; k < 2 * j + 1; k++)
//		{
//			printf("*");
//		}
//		printf("\n");
//			
//		
//
//	}
//	return 0;
//}


//#include<stdio.h>
//int Rong(int n, int k)
//{
//	if (k == 1)
//		return n;
//	else
//		return (n * Rong(n, k - 1));
//}
//int main()
//{
//	int n=3,k=2;
//	int ret=Rong(n, k);
//	for (int i = 0; i <= 100000; i++)
//	{
//		if (i <= 9)
//		{
//			printf("%d ", i);
//		}
//		else if (i > 9 && i < 100)
//		{
//			if (i == Rong(i % 10, 2) + Rong(i / 10, 2))
//				printf("%d ", i);
//		}
//		else if (i > 99 && i < 1000)
//		{
//			if (i == Rong(i % 10, 3) + Rong(i / 10%10, 3)+Rong(i/10/10,3))
//				printf("%d ", i);
//		}
//		else if (i >= 1000 && i < 10000)
//		{
//			if (i == Rong(i % 10, 4) + Rong(i / 10 % 10, 4) + Rong(i / 10 / 10%10, 4)+Rong(i/10/10/10,4))
//				printf("%d ", i);
//		}
//		else if (i >=10000 && i < 100000)
//		{
//			if (i == Rong(i % 10, 5) + Rong(i / 10 % 10, 5) + Rong(i / 10 / 10%10, 5)+Rong(i/10/10/10%10,5)+Rong(i/10/10/10/10,5))
//				printf("%d ", i);
//		}
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int Sn(int i)
//{
//	return 5 * i + 4 * i * 10 + 3 * i * 100 + 2 * i * 1000 + i * 10000;
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	Sn(n);
//	printf("%d", Sn(n));
//
//	return 0;
//}

//int main()
//{
//	int line = 0;
//	int i = 0;
//	scanf("%d", &line);//7
//	//打印上半部分
//	for (i = 0; i < line; i++)
//	{
//		//打印一行
//		//打印空格
//		int j = 0;
//		for (j = 0; j < line - 1 - i; j++)
//		{
//			printf(" ");
//		}
//		//打印*
//		for (j = 0; j < 2 * i + 1; j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//
//
//	//打印下半部分
//	for (i = 0; i < line - 1; i++)
//	{
//		//打印一行
//		int j = 0;
//		for (j = 0; j <= i; j++)
//		{
//			printf(" ");
//		}
//		for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#define N_VALUES 5
//#include<stdio.h>
//int main()
//{
//	int arr[N_VALUES];
//	int* pa;
//	for (pa = &arr[N_VALUES - 1]; pa >= &arr[0]; pa--)
//	{
//		pa = 0;
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	unsigned long pulArray[] = { 6,7,8,9,10 };
//	unsigned long* pulPtr;
//	pulPtr = pulArray;
//	*(pulPtr + 3) += 3;
//	printf("% d, % d\n", *pulPtr, *(pulPtr + 3));
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr1[] = {1,2,3};
//	int arr2[] = {4,5,6};
//	int arr3[] = {7,8,9};
//	int* ptr[] = { arr1,arr2,arr3 };//指针数组
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 3; j++)
//		{
//			printf("%d ", ptr[i][j]);
//		}
//		printf("\n");
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char arr[6] = "abcde";
//	printf("%d", &arr[5] - &arr[0]);
//
//	return 0;
//}

//#include < stdio.h >
//struct S
//{
//	int a;
//	int b;
//};
//int main()
//{
//	struct S a, * p = &a;
//	a.a = 99;
//	printf("%d\n", *p.a);
//	return 0;
//}

//#include<stdio.h>
//
//struct stu
//{
//	int num;
//	char name[10];
//	int age;
//};
//
//void fun(struct stu* p)
//{
//	printf(" %s\n", (*p).name);
//}
//int main()
//{
//	struct stu students[3] = { {9801,"zhang",20},
//							 {9802,"wang",19},
//					{9803,"zhao",18} };
//	fun(students + 1);
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//void reverse_print(char* p)
//{
//    int len = strlen(p);
//    char temp = *p;
//    *p = *(p + len - 1);
//    *(p + len - 1) = '\0';
//    if (strlen(p + 1) >= 2)
//        reverse_print(p + 1);
//    *(p + len - 1) = temp;
//}
//int main()
//{
//    char* arr = (char*)malloc(10000 * sizeof(char));
//    gets(arr);
//    reverse_print(arr);
//    printf("%s", arr);
//    
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int money;
//	printf("输入金额数:");
//	//scanf("%d", &money);
//	printf("汽水：%d", money + money / 2);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3 };
//	int* p = arr;
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int money;
//	scanf("%d", &money);
//	int sum = money;
//	int emp = money;
//
//	
//	while (emp>1)
//	{
//		sum = sum + emp / 2;
//		emp = emp / 2 + emp % 2;
//
//	}
//	printf("%d", sum);
//	return 0;
//}

//#include<stdio.h>
//int Sn(int x, int y)
//{
//	int sum = 0;
//	int n = x;
//	for (int i = 0; i < y; i++)
//	{
//		sum += x;
//		x = x * 10 + n;
//	}
//	return sum;
//}
//int main()
//{
//	int a, b;
//	printf("数字：\n前几xiang：");
//	scanf("%d%d", &a, &b);
//	printf("%d", Sn(a,b));
//
//	return 0;
//}

//#include<stdio.h>
//void Maopao(int* p, int sum)
//{
//	int i, j;
//	for (i = 0; i < sum - 1; i++)//冒泡排序的次数
//	{
//		int flage = 0;//判断是否提前就排号
//		for (j = 0; j < sum - 1-i ; j++)//一次冒泡排序的进行
//		{
//			if (p[j] > p[j + 1])
//			{
//				int tmp = p[j];
//				p[j] = p[j + 1];
//				p[j + 1] = tmp;
//				flage = 1;
//			}
//		}
//	}
//
//}
//int main()
//{
//	int arr[] = { 2,5,256,26,97,60,63,7,7,68,34,514,32, };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	Maopao(arr, sz);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//
//#include<stdio.h>
//double Count(int n, int k)
//{
//	if (k == 0)
//		return 1;
//	else if (k > 0)
//		return n * Count(n, k - 1);
//	else
//		return 1.0 / Count(n, -k);
//}
//int main()
//{
//	int n,k;
//	scanf("%d%d", &n,&k);
//	double sum = Count(n, k);
//	printf("%lf", sum);
//	return 0;
//}

//#include<stdio.h>
//int  main()
//{
//	int i;
//	for (i = 0; i < 5; i++)
//	{
//		printf("he");
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i = 0;
//	int arr[10] = { 0 };
//	for (i = 0; i <= 12; i++)
//	{
//		arr[i] = 0;
//		printf("%d ", i);
//	}
//
//	return 0;
//}
//

//#include<stdio.h>
//#include<stdlib.h>
//int* Paixu(int arr[], int sz)
//{
//	int i = 0;
//	int j = 0;
//	int* brr = (int*)malloc(sz * sizeof(int));
//	for (i = 0; i < sz; i++)
//	{
//		if (arr[i] % 2)
//			brr[j++] = arr[i];
//	}
//	for (i=0; i < sz; i++)
//	{
//		if (arr[i] % 2==0)
//			brr[j++] = arr[i];
//	}
//	return brr;
//}
//int main()
//{
//	int* arr = (int*)malloc(100 * sizeof(int));
//	printf("输入数字的位数\n");
//	int n,k;
//	scanf("%d", &n);
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%d", &k);
//		arr[i] = k;
//	}
//	int*p=Paixu(arr,n);
//	for (int i = 0; i < n; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	free(arr);
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//char* Strcpy(char* a2, char* a1)
//{
//	int* p = a2;
//	while (*a2++ = *a1++)
//	{
//		;
//	}
//	*a2 = *a1;
//	return p;
//}
//int main()
//{
//	char* arr1 = (char*)malloc(50 * sizeof(char));
//	char* arr2 = (char*)malloc(50 * sizeof(char));
//	gets(arr1);
//	Strcpy(arr2, arr1);
//	printf("%s", Strcpy(arr2, arr1));
//	free(arr1);
//	free(arr2);
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//int Strlen(char* p)
//{
//	int count = 0;
//	while (*p++)
//		count++;
//	return count;
//}
//int main()
//{
//	char* arr = (char*)malloc(50 * sizeof(char));
//	gets(arr);
//	int sum = Strlen(arr);
//	printf("%d", sum);
//	free(arr);
//	return 0;
//}


//#include"add.h"
//void menue()
//{
//	printf("******* 0.exit * 1.play *******\n");
//}
//void game()
//{
//	char mine[H][L];
//	char show[H][L];
//	init(mine, H, L, '0');
//	init(show, H, L, '*');
//	Print(show, h, l);
//	Put(mine, h, l);
//	//Print(mine, h, l);
//	Search(show, mine, h, l);
//	printf("我的好大儿\n");
//}
//int main()
//
//{
//	srand((unsigned int)time(NULL));
//	int n;
//	do{
//		menue();
//		scanf("%d", &n);
//		switch (n)
//		{
//		case 0:
//			printf("退出\n");
//			break;
//		case 1:
//			printf("进入扫雷游戏\n");
//			game();
//			break;
//		default:
//			printf("输入错误，请重试\n");
//			break;
//
//		}
//
//	} while (n);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10;
//
//	return 0;
//}

//#include<stdio.h>
//int Check(int x)
//{	
//	return *(char*)&x;//强制类型转换为char*，返回低地址数据
//}
//int main()
//{
//	int a = 1;
//	if (Check(a) == 1)
//		printf("小端");
//	else
//		printf("大端");
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a = 128;
//	printf("%d", a);//-128
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	unsigned int a = -20;
//	unsigned int b = 10;
//	printf("%d\n", a + b);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	unsigned int a = -20;
//	printf("%d", a);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	//00000000 00000000 00000000 00001010	原码
//	//00000000 00000000 00000000 00001010	反码
//	//00000000 00000000 00000000 00001010	补码
//
//	int b = -10;
//	//10000000 00000000 00000000 00001010	原码
//	//11111111 11111111 11111111 11110101	反码
//	//11111111 11111111 11111111 11110110	补码
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a = -1;
//	signed char b = -1;
//	unsigned char c = -1;
//	printf("a=%d b=%d c=%d", a, b, c);
//	
//
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//    char a[1000] = { 0 };
//    int i = 0;
//    for (i = 0; i < 1000; i++)
//    {
//        a[i] = -1 - i;
//    }
//    printf("%d", strlen(a));
//    return 0;
//}

//int main()
//{
//	char a = 200;
//	char b = 100;
//	char c = 0;
//	c = a + b;
//	printf("“ % d % d”", a + b, c);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i;
//	scanf("%d", &i);
//	switch (i)
//	{
//	case 1:
//		printf("he");
//		break;
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a, b,i=1;
//	scanf("%d%d", &a, &b);
//	while (a * i % b != 0)
//	{
//		i++;
//	}
//	printf("%d", i * a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a;
//	int ret = scanf("%d", &a);
//	printf("%d", ret);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a, b, c, d, e;
//	for (a = 1; a <= 5; a++)
//	{
//		for (b = 1; b <= 5; b++)
//		{
//			for (c = 1; c <= 5; c++)
//			{
//				for (d = 1; d <= 5; d++)
//				{
//					for(e=1;e<=5;e++)
//					{
//						if (((b == 2) + (a == 3) == 1) &&
//							((b == 2) + (e == 4) == 1) &&
//							((c == 1) + (d == 2) == 1) &&
//							((c == 5) + (d == 3) == 1) &&
//							((e == 4) + (a == 1) == 1)&&(a*b*c*d*e==120))
//							printf("A=%d B=%d C=%d D=%d E=%d\n",a,b,c,d,e);
//
//					}
//				}
//			}
//		}
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[10][10];
//	int i, j, k = 1;
//	for (i = 0; i < 10; i++)
//	{
//		if(k<=2)
//		{
//			for (j = 0; j < k; j++)
//			{
//				arr[i][j] = 1;
//			}
//		}
//		else
//			for (j = 0; j < k; j++)
//			{
//				arr[i][j] = ;
//			}
//		
//	}
//
//	return 0;
//}

//#include<stdio.h>
//void reverse(char* l, char* r)
//{
//	while (l < r)
//	{
//		char tmp = *l;
//		*l = *r;
//		*r = tmp;
//		l++; r--;
//	}
//}
//int main()
//{
//	char arr[100] = { 0 };
//	gets(arr);
//	int len = strlen(arr);
//	reverse(arr,arr+len-1);
//	char* p = arr;
//	while(*p)
//	{
//		char* q = p;
//		while (*p != ' '&&*p!='\0')
//		{
//			p++;
//		}
//		reverse(q, p - 1);
//		p += 1;
//	}
//	printf("%s", arr);
//	return 0;
//}

//#include<stdio.h>
//void intit(int brr[6][6])
//{
//	int i, j;
//	for (i = 0; i < 6; i++)
//	{
//		for (j = 0; j <= i; j++)
//		{
//			if (j == i || j == 0)
//				brr[i][j] = 1;
//			else
//				brr[i][j] = brr[i - 1][j] + brr[i - 1][j - 1];
//		}
//	}
//}
//int main()
//{
//	int i, j;
//	int arr[6][6];
//	intit(arr);
//	for (i = 0; i < 6; i++)
//	{
//		for (j = 0; j <= i; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//    int killer = 0;
//    //分别假设凶手是a,b,c,d,看谁是凶手时满足3个人说了真话，一个人说了假话
//    for (killer = 'a'; killer <= 'd'; killer++)
//    {
//        if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
//            printf("凶手是：%c", killer);
//    }
//    return 0;
//}

//void yangHuiTriangle(int n)
//{
//	int data[30][30] = { 1 }; //第一行直接填好，播下种子
// 
//	int i, j;
// 
//	for (i = 1; i < n; i++) //从第二行开始填
//	{
//		data[i][0] = 1; //每行的第一列都没有区别，直接给1，保证不会越界。
//		for (j = 1; j <= i; j++) //从第二列开始填
//		{
//			data[i][j] = data[i - 1][j] + data[i - 1][j - 1]; //递推方程
//		}
//	}
// 
//	for (i = 0; i < n; i++) //填完打印
//	{
//		for (j = 0; j <= i; j++)
//		{
//			printf("%d ", data[i][j]);
//		}
//		putchar('\n');
//	}
//}
//int main()
//{
//	int n; 
//	scanf("%d", &n);
//	yangHuiTriangle(n);
//
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int i, j,k;
//	for (i = 1; i <= 6; i++)
//	{
//		for (j=0;j<6-i;j++)
//		{
//			printf(" ");
//		}
//		for (k = 0; k < i * 2 - 1; k++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//
//	return 0;
//}

////两数之和
//按位异或，同假异真
//#include<stdio.h>
//int main()
//{
//	int a, b;
//	scanf("%d%d", &a, &b);
//	while (a & b)
//	{
//		a = a ^ b;//没进位
//		b = (a ^ b & b) << 1;//进位
//
//	}
//	printf("%d", a^b);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	double a = 0.0000001;
//	if (a == 0.0)
//		printf("%f",a);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a;
//	printf("%d", a += a -= a = 9);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char c = 'A';
//	if ('0' <= c <= '9') printf("YES");
//	else printf("NO");
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	unsigned char i;
//	for (i = 0; i <= 255; i++)
//	{
//		printf("ha");
//	}
//	
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	float a = 5.5f;
//	//（ - 1）^S  * M  * 2^E
//	// (-1)^0 * 1.011 * 2^2
//	//      0  10000001 01100000000000000000000
//	//		S  E=127+2  M=011
//	//十六进制：40b00000
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int n = 9;
//	//00000000 00000000 00000000 00001001
//	float* p = (float*)&n;//强制类型转换成浮点型，但并不改变a的类型
//
//	printf("n的值为:%d\n", n);
//	printf("*p的值为:%f\n", *p); //*p指的是从n的地址处拿四个字节的浮点数，所以*p被看作是浮点数
//	//将上面的数看成是浮点数的存储方式
//	//0 00000000 00000000000000000001001	E为全0，即一个无限接近0的数（0.00000000000000000001001*2^-126）
//	
//	*p = 9.0;//同样是解引用操作,以浮点型的视角存放浮点数，依然是存放在n当中的
//	//0 10000010 00100000000000000000000
//
//	printf("n的值为:%d\n", n);//0 10000010 00100000000000000000000
//	printf("*p的值为:%f\n", *p);
//	
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char* p1 = "abc";
//	*p1 = 'r';
//	printf("%s", p1);
//
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	char str1[] = "hello bit.";
//	char str2[] = "hello bit.";//创建了两个不一样的数组，尽管内容一样
//
//	const char* str3 = "hello bit.";
//	const char* str4 = "hello bit.";//两个常量指针，存储的内容是常量字符串，不可更改
//
//	if (str1 == str2)
//		printf("str1 and str2 are same\n");
//	else
//		printf("str1 and str2 are not same\n");
//
//	if (str3 == str4)
//		printf("str3 and str4 are same\n");
//	else
//		printf("str3 and str4 are not same\n");
//
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//int main()
//{
//	int* arr = (int*)malloc(sizeof(int) * 1);
//	arr[0] = 0;
//
//	int* p = NULL;
//	int* q = 0;
//	free(arr);
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
//int main()
//{
//	int k,i;
//	char* arr = (char*)malloc(100 * sizeof(char));
//	char* brr = (char*)malloc(100 * sizeof(char));
//	gets(arr);
//	int len = strlen(arr);
//	printf("旋转字符串中的k个字符:");
//	scanf("%d", &k);
//	int m = k,j=0;
//	for (i = 0; i < len; i++)
//	{
//		if (i < len -m )
//			brr[i] = arr[k++];
//		else
//			brr[i] = arr[j++];
//	}
//	brr[len] = '\0';
//	printf("%s", brr);
//
//	return 0;
//}

//#include<stdio.h>
//
//int main()
//{
//	int n, i, j;
//	int arr[4][5] = { { 1,3,5,7,8 }, { 2,5,7,9,10 }, { 4,6,9,10,13 }, { 7,13,19,20,21 } };
//	printf("请输入你要找的数字:");
//	scanf("%d", &n);
//	for (i = 0; i <= 3; i++)
//	{
//		for (j = 0; j <= 4; j++)
//		{
//			if (arr[i][j] == n)
//			{
//				printf("存在\n");
//				break;
//			}
//			
//		}
//
//	}
//
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//void reverse(char* l, char* r)
//{
//	while(l<r)
//	{
//		char tmp = *l;
//		*l = *r;
//		*r = tmp;
//		l++;
//		r--;
//	}
//
//}
//int main()
//{
//	char* arr = (char*)malloc(50 * sizeof(char));
//	gets(arr);
//	int len = strlen(arr);
//	reverse(arr, arr + len - 1);
//	char* p = arr;
//	char* q = arr;
//	while (*p)
//	{
//		if (*p != ' ')
//			p++;
//		else
//		{
//			reverse(q, p - 1);
//			q = p+1;
//			p = q;
//		}
//		
//	}
//	reverse(q, p - 1);
//	printf("%s", arr);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	int* p = arr;
//	for(int i=0;i<10;i++)
//	{ 
//		printf("%d ", *(p + i));
//
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int n = 9;
//	float* p = (float*)&n;//强制类型转换成浮点型，但并不改变n的类型
//
//	printf("n的值为:%d\n", n);
//	printf("*p的值为:%f\n", *p);
//
//	*p = 9.0;
//	printf("n的值为:%d\n", n);
//	printf("*p的值为:%f\n", *p);
//
//	return 0;
//}

//
//#include<stdio.h>
//void Print(int(*p)[3], int l, int r)
//{
//	for (int i = 0; i < l; i++)
//	{
//		for (int j = 0; j < r; j++)
//		{
//			printf("%d ", (*(p + i))[j]);
//
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int arr[2][3] = { 1,2,3,4,5,6 };
//	Print(arr, 2, 3);
//	return 0;
//}

//#include<stdio.h>
//int Max(int x, int y)
//{
//	return (x > y ? x : y);
//}
//int main() 
//{
//	int a, b;
//	scanf("%d%d", &a, &b);
//	int(*p)(int ,int) = Max;//函数名就是地址，p指向Max地址
//	//函数类型是int （int ，int）
//
//	//使用：
//	int ret = (*p)(a, b);//这里（*p）就相当于Max
//	printf("%d", ret);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	unsigned short a= 65535;
//	unsigned short b=a+1;
//
//
//	return 0
//}
//
//#include<stdio.h>
//int sum(int x, int y)
//{
//	return x + y;
//}
//int sub(int x, int y)
//{
//	return x - y;
//}
//int mul(int x, int y)
//{
//	return x * y;
//}
//int div(int x, int y)
//{
//	return x / y;
//}
//int main()
//{
//	int (*p[4])(int, int) = { sum,sub,mul,div };
//
//	return 0;
//} 

//int Add(int x, int y)
//{
//	return x + y;
//}
//int Sub(int x, int y)
//{
//	return x - y;
//}
//int Mul(int x, int y)
//{
//	return x * y;
//}
//int Div(int x, int y)
//{
//	return x / y;
//}
////写一个计算器能完成整数的+-*/
////增加: << >> & | ^ && ||
////
//void menu()
//{
//	printf("******************************\n");
//	printf("****   1. add    2.sub   *****\n");
//	printf("****   3. mul    4.div   *****\n");
//	printf("****   0. exit           *****\n");
//	printf("******************************\n");
//}
//int main()
//{
//	int input = 0;
//	int x = 0;
//	int y = 0;
//	int ret = 0;
//	do
//	{
//		menu();
//		printf("请选择:>");
//		scanf("%d", &input);
//		switch (input)
//		{
//		case 1:
//			printf("请输入两个操作数:>");
//			scanf("%d %d", &x, &y);
//			ret = Add(x, y);
//			printf("%d\n", ret);
//			break;
//		case 2:
//			printf("请输入两个操作数:>");
//			scanf("%d %d", &x, &y);
//			ret = Sub(x, y);
//			printf("%d\n", ret);
//			break;
//		case 3:
//			printf("请输入两个操作数:>");
//			scanf("%d %d", &x, &y);
//			ret = Mul(x, y);
//			printf("%d\n", ret);
//			break;
//		case 4:
//			printf("请输入两个操作数:>");
//			scanf("%d %d", &x, &y);
//			ret = Div(x, y);
//			printf("%d\n", ret);
//			break;
//		case 0:
//			printf("退出计算器\n");
//			break;
//		default:
//			printf("选择错误\n");
//			break;
//		}
//	} while (input);
//	return 0;
//}

//27  18  
//void*//无具体类型指针（通用类型指针）不可解引用、++等操作（buzhi2访问多少空间）

//#include<stdio.h>
//int a = 1;
//int fun(int a, int* b)
//{
//	a = 5;
//	*b = 10;
//	return a + *b;
//}
//int main()
//{
//	int a = 1, b = 2;
//	a = fun(a, &b);
//	printf("%d %d",a, b);
//
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//int If(char* a, char* b, int len)
//{
//	char* b1 = b;
//	char* a2 = a;
//	char* a1 = a + len ;//使数组元素*2，占据'\0'位置
//	for (int i = 0; i < len; i++)
//	{
//		*(a1 + i) = *(a2 + i);//注意写法，可不能++，会改变值
//	}
//	for(int j=0;j<len;j++)//判断
//	{
//		int num = 0; 
//		b = b1;
//		for (int i = 0; i < len; i++)
//		{
//			if (*(b+i) == *(a + j+i))//不要改变a，b的值
//			{
//				num++;
//			}
//		}
//		if (num == len)
//			return 1;
//	}
//	
//	return 0;
//
//}
//int main()
//{
//	char arr[20];
//	char brr[20];
//	printf("请输入两个字符串\n");
//	gets(arr);
//	gets(brr);
//	int len = strlen(arr);
//	int ret = If(arr, brr, len);
//	printf("%d", ret);
//
//	return 0;
//}

//#include<stdio.h>
//int add(int x, int y)
//{
//	return x + y;
//}
//int sub(int x, int y)
//{
//	return x - y;
//}
//int mul(int x, int y)
//{
//	return x * y;
//}
//int div(int x, int y)
//{
//	return x / y;
//}
//void menue()
//{
//	printf("0.exit   1.加法   2.减法   3.乘法   4.除法\n");
//}
//int main()
//{
//	int (*p[])(int, int) = {0, add,sub,mul,div };
//	int input = 0;
//	int x, y;
//	
//	do {
//		menue();
//		printf("选择\n");
//		scanf("%d", &input);
//		if (input >= 1 && input <= 4)
//		{
//			printf("输入两个数\n");
//			scanf("%d%d", &x, &y);
//			int ret = p[input](x, y);
//			printf("%d\n", ret);
//		}
//		else if (input == 0)
//			break;
//
//	} while (input);
//
//	return 0;
//}

//#include<stdio.h>
//int com(const void* p1, const void* p2)//p1与p2实际就是arr中的元素
//{
//	return *(int*)p1 - *(int*)p2;//前面-后面
//}
//int main()
//{
//	//void qsort(void* base, size_t num, 
//	//									size_t width,			
//	//	int(__cdecl * compare)(const void* elem1, const void* elem2));
//
//
//	int arr[10] = { 3,7,5,9,0,2,4,6,8,1 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(arr[0]), com);//传自己定的函数com
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}


//#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
//
//struct ide
//{
//	char name[20];
//	short age;
//};
//int cmp(const void* p1,const void* p2 )
//{
//	//return (*(struct ide*)p1).age - ((struct ide*)p2)->age;//结构体的两种写法
//
//	return strcmp((*(struct ide*)p1).name, ((struct ide*)p2)->name);//比较字符用strcmp
//}
//int main()
//{
//	struct ide man[] = { { "zhangsan",18 },{ "lisa",37 }, { "wanghu",23 } };
//	int sz = sizeof(man) / sizeof(man[0]);
//	qsort(man, sz, sizeof(man[0]), cmp);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d %s\n", man[i].age,man[i].name);
//	}
//		
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//
//void swap(char* a, char* b,size_t n)//通过单位大小好进行交换
//{
//	for (int i = 0; i < n; i++)
//	{
//		char tmp = *a;
//		*a = *b;
//		*b = tmp;
//		a++; b++;
//	}
//	
//}
//void pul(void* base, size_t num, size_t width, int(*pc)(void* p1, void* p2))
//{
//	int i, j;
//	for (i = 0; i < num-1; i++)//冒泡次数
//	{
//		for (j = 0; j < num - 1 - i; j++)//每一次
//		{
//			if (pc((char*)base+j*width,(char*)base+(j+1)*width)>0)//强转成char*的指针，好计算跳过的字节个数
//			{
//				swap((char*)base + j * width, (char*)base + (j + 1) * width,width);//将单位大小也传来
//			}
//		}
//	}
//
//}
//
//struct ide
//{
//	char name[20];
//	short age;
//};
//
//int com(const void* p1, const void* p2)//这是你自己需要写的函数，给一个比较标准
//{
//	//return *(int*)p1 - *(int*)p2;
//	return strcmp((*(struct ide*)p1).name, (*(struct ide*)p2).name);
//}
//
//int main()
//{
//	struct ide arr[] = { {"wanggang",25},{"lihu",18},{"niuma",32} };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	pul(arr, sz, sizeof(arr[0]), com);//自己定义一个函数pul实现qsort的功能。
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%s %d\n", arr[i].name, arr[i].age);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[2][3] = { 1,2,3,4,5,6 };
//	printf("%p\n", &arr);
//	printf("%p\n", &arr+1);//&arr是整个数组的地址
//	printf("%p", arr+1);//arr是首行地址
//	printf("%p", *(arr + 1));//arr是首行地址
//
//	return 0;
//}

//int main()
//{
//	int aa[2][5] = { 10,9,8,7,6,5,4,3,2,1 };
//	int* ptr1 = (int*)(&aa + 1);
//	int* ptr2 = (int*)(*(aa + 1));
//	printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
//struct ide
//{
//	char name[20];
//	short age;
//	char card[20];
//};
//int cmpa(const void* p1, const void* p2)
//{
//	return strcmp(((struct ide*)p1)->name, ((struct ide*)p2)->name);
//}
//int main()
//{
//	//int arr[7] = { 5,2,7,4,9,0,3 };
//	struct ide arr[] = { {"zhang",37,"220592058"},{"wang",18,"220592051"},{"zhao",23,"220592053"} };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(arr[1]), cmpa);
//	for(int i=0;i<sz;i++)
//	{
//		//printf("%d ", arr[i]);
//		printf("%s %d %s\n",arr[i].name,arr[i].age,arr[i].card);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//void swap(char* a, char* b,size_t wid)
//{
//	for (int i = 0; i < wid; i++)
//	{
//		char tmp = *a;
//		*a = *b;
//		*b = tmp;
//		a++; b++;
//	}
//}
//void pulb(void* base,size_t sz,size_t wid ,int* cmp(const void* p1,const void*p2) )
//{
//	int i, j;
//	for (i = 0; i < sz-1; i++)
//	{
//		int k = 1;
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (cmp((char*)base + j * wid, (char*)base + (j + 1) * wid) > 0)
//			{
//				k = 0;
//				swap((char*)base + j * wid, (char*)base + (j + 1) * wid, wid);
//			}
//		}
//		if (k == 1)
//			break;
//	}
//
//}
//int cmp(const void* p1, const void* p2)
//{
//	return *(int*)p2 - *(int*)p1;
//}
//int main()
//{
//
//	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	pulb(arr, sz, sizeof(arr[0]), cmp);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//#include<stdio.h>
//char Check(int x)
//{
//	return *(char*)&x;//强制类型转换为char*，返回低地址数据
//}
//int main()
//{
//	int a = 1;
//	if (Check(a) == 1)
//		printf("小端");
//	else
//		printf("大端");
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 1;
//	//00 00 00 01	-———十六进制
//	char* p = (char*)&a;//强制类型转换&a为char*类型以便拿到低地址字节
//
//	//如果是大端：拿低位地址就是a的高字节数据0
//	//如果是小端：拿低位地址就是a的低字节数据1
//	if (*p == 1)
//		printf("小端");
//	else
//		printf("大端");
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	float a = 6.237f;
//	float b= (a * 100 + 0.5)/100.0;
//	
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int n = 1001;
//	int ans = 0;
//	for (int i = 1; i <= n; ++i)
//	{
//		ans ^= i % 3;
//	}
//	printf("%d", ans);
//	return 0;
//
//	return 0;
//}


//#include <stdio.h>
//
//int main()
//{
//    int a;
//    int i = 0;
//    char arr[100];
//    scanf("%d", &a);
//    if (a == 0)
//        printf("0");
//    else
//    {
//        for (i = 0; a > 0; i++)
//        {
//            arr[i] = (char)(a % 10) + '0';
//            a = a / 10;
//        }
//        arr[i] = '\0';
//        printf("%s", arr);
//    }
//
//    return 0;
//}


//#include<stdio.h>
//int main() {
//
//    int i = 0, j = 0, k = 0,m=0;
//    char arr[1000] = { 0 };
//    char* p[100];
//    gets(arr);
//    int sz = strlen(arr);
//    for (m = 0; m < sz; m++)//遍历
//    {
//        if (arr[m] < 65 || arr[m]>90 && arr[m] < 97 || arr[m]>122)
//            arr[m] = ' ';
//    }
//    
//    while (arr[i] != '\0')
//    {
//        while (arr[i] == ' ')
//        {
//            i++;
//        }
//        p[j++] = &arr[i];
//        while (arr[i] != ' '&& arr[i]!='\0')
//            i++;
//        arr[i++] = '\0';
//
//    }
//    for (k = j - 1; k >= 0; k--)//反着打印
//    {
//        printf("%s ", p[k]);//空格
//    }
//    return 0;
//}


#include<stdio.h>
#include<string.h>
//int main()
//{
//	int a[] = { 1,2,3,4 };
//
//	printf("%d\n", sizeof(a));
//	printf("%d\n", sizeof(a + 0));
//	printf("%d\n", sizeof(*a));
//	printf("%d\n", sizeof(a + 1));
//	printf("%d\n", sizeof(a[1]));
//	printf("%d\n", sizeof(&a));
//	printf("%d\n", sizeof(*&a));
//	printf("%d\n", sizeof(&a + 1));
//	printf("%d\n", sizeof(&a[0]));
//	printf("%d\n", sizeof(&a[0] + 1));
//
//	return 0;
//}

//int main()
//{
//	char arr[] = "abcdef";
//
//	printf("%d\n", strlen(arr));
//	printf("%d\n", strlen(arr + 0));
//	//printf("%d\n", strlen(*arr));
//	//printf("%d\n", strlen(arr[1]));
//	printf("%d\n", strlen(&arr));
//	printf("%d\n", strlen(&arr + 1));
//	printf("%d\n\n", strlen(&arr[0] + 1));
//
//	printf("%d\n", sizeof(arr));
//	printf("%d\n", sizeof(arr + 0));
//	printf("%d\n", sizeof(*arr));
//	printf("%d\n", sizeof(arr[1]));
//	printf("%d\n", sizeof(&arr));
//	printf("%d\n", sizeof(&arr + 1));
//	printf("%d\n", sizeof(&arr[0] + 1));
//
//	return 0;
//}

//int main()
//{
//	char* p = "abcdef";
//
//	printf("%d\n", strlen(p));
//	printf("%d\n", strlen(p + 1));
//	//printf("%d\n", strlen(*p));
//	//printf("%d\n", strlen(p[0]));
//	printf("%d\n", strlen(&p));
//	printf("%d\n", strlen(&p + 1));
//	printf("%d\n\n", strlen(&p[0] + 1));
//
//	printf("%d\n", sizeof(p));
//	printf("%d\n", sizeof(p + 1));
//	printf("%d\n", sizeof(*p));
//	printf("%d\n", sizeof(p[0]));
//	printf("%d\n", sizeof(&p));
//	printf("%d\n", sizeof(&p + 1));
//	printf("%d\n", sizeof(&p[0] + 1));
//
//	return 0;
//}

//int main()
//{
//	int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
//
//	printf("%d\n", sizeof(a));
//	printf("%d\n", sizeof(a[0][0]));
//	printf("%d\n", sizeof(a[0]));
//	printf("%d\n", sizeof(a[0] + 1));
//	printf("%d\n", sizeof(*(a[0] + 1)));
//	printf("%d\n", sizeof(a + 1));
//	printf("%d\n", sizeof(*(a + 1)));
//	printf("%d\n", sizeof(&a[0] + 1));
//	printf("%d\n", sizeof(*(&a[0] + 1)));
//	printf("%d\n", sizeof(*a));
//	printf("%d\n", sizeof(a[3]));
//
//	return 0;
//}

//int main()
//{
//	int a = 3;
//	short b = 7;
//	printf("%u\n",sizeof(a = a + 7));
//	printf("%d\n",a);
//
//	return 0;
//}

//int main()
//{
//	int a[5] = { 1, 2, 3, 4, 5 };//整型数组存放五个元素
//
//	int* ptr = (int*)(&a + 1);//&a是整个数组的地址，+1跳过五个整型
//	printf("%d,%d", *(a + 1), *(ptr - 1));//a是首元素地址，ptr是整形指针-1是移一个整形
//
//	return 0;
//}

//struct Test
//{
//	int Num;
//	char* pcName;
//	short sDate;
//	char cha[2];
//	short sBa[4];
//}*p;
////已知，结构体Test类型的变量大小是32个字节
//int main()
//{
//	p = (struct Test*)0x100000;//将0x100000强行存放在指针p中
//	printf("%p\n", p + 0x1);//0x1就是十进制的1，p是结构体指针类型，＋1跳过一个结构体类型 20
//	printf("%p\n", (unsigned long)p + 0x1);//将p强转成无符号整型+1就是整数＋1
//	printf("%p\n", (unsigned int*)p + 0x1);//将p强转成无符号整型指针类型，+1跳过一个整型
//
//	return 0;
//}

//int main()
//{
//	int a[4] = { 1, 2, 3, 4 };
//	int* ptr1 = (int*)(&a + 1);
//	int* ptr2 = (int*)((int)a + 1);
//	printf("%x,%x", ptr1[-1], *ptr2);
//	return 0;
//}

//int fun(unsigned int x)
//{
//	int n = 0;
//	while (x + 1)
//	{
//		n++;
//		x = x | (x + 1);
//	} return n;
//}
//int main()
//{
//
//	printf("%d", fun(2014));
//
//}

//#include<stdio.h>
//void count(int n)
//{
//	if (n > 9)
//		count(n / 10);
//	printf("%d ", n % 10);
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	count(n);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a[] = { 1,2 };
//	int* p = a;
//	int* q = a;
//	int* o = a;
//	printf("%d\n", *p++);
//	printf("%d\n", *(q++));
//	printf("%d\n", (*o)++);
//	printf("%d\n", *o);
//
//	return 0;
//}


//#include <stdio.h>
//#include<math.h>
//int main()
//{
//    int a, b;
//    
//    while (scanf("%d%d", &a, &b) != EOF)
//    {
//        double c = a;
//        double sum = 0.0;
//        for (int i = 0; i < b; i++)
//        {
//            sum += c;
//            c = sqrt(c);
//        }
//        printf("%.2lf\n", sum);
//
//    }
//
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, * p = a + 5, * q = NULL;
//	*q = *(p + 5);
//	printf("%d %d\n", *p, *q);
//	return 0;
//}

//#include<stdio.h>
//int fun(int n)
//{
//	int prod = 1, i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		prod *= i;
//	} 
//	
//	return prod;
//}
//int main()
//{
//	printf("%d", fun(12));
//
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//	int a[4] = { 1, 2, 3, 4 };
//	int* ptr1 = (int*)(&a + 1);
//	int* ptr2 = (int*)((int)a + 1);
//	printf("%x,%x", ptr1[-1], *ptr2);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int a[3][2] = { (0, 1), (2, 3), (4, 5) };
//	int* p;
//	p = a[0];
//	printf("%d", p[0]);
//	return 0;
//}
//


//#include <stdio.h>
//int main()
//{
//	int a[5][5];
//	int (*p)[4];
//	p = a;
//
//	printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
//
//	return 0;
//}

//int main()
//{
//	int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//	int* ptr1 = (int*)(&aa + 1);
//	int* ptr2 = (int*)(*(aa + 1));
//	printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));
//	return 0;
//}

#include <stdio.h>

//int main()
//{
//	char* a[] = { "work","at","alibaba" };
//
//	char** pa = a;
//
//	pa++;
//	
//	printf("%s\n", *pa);
//	return 0;            
//}

//int main()
//{
//	char* c[] = { "ENTER","NEW","POINT","FIRST" };
//	char** cp[] = { c + 3,c + 2,c + 1,c };
//	char*** cpp = cp;
//
//	printf("%s\n", **++cpp); 
//	printf("%s\n", *-- * ++cpp + 3);
//	printf("%s\n", *cpp[-2] + 3);
//	printf("%s\n", cpp[-1][-1] + 1);
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int* p = a;
//	a = (int*)a;
//	printf("%p\n", p);
//	printf("%X\n", a);
//
//	return 0;
//}

//#include<stdio.h>
#include<assert.h>
//size_t my_strlen(const char* p)//仅仅求长度—>遍历字符串。不会改变字符串
//{
//	/*int count = 0;
//	while(*p++)
//	{
//		count++;
//	}*/
//	assert(p);
//	if (*p==0)//存在解引用—>断言assert
//		return 0;
//	else
//		return 1 + my_strlen(p+1);
//}
//
//int main()
//{
//	char arr[] = "abcdefg";
//	size_t len = my_strlen(arr);
//	printf("%u", len);
//
//	return 0;
//}

//void my_strcpy(char* des, const char* src)
//{
//	assert(des && src);
//	while (*des++ = *src++)
//	{
//		;
//	}
//	//*des = 0;
//}
//
//int main()
//{
//	char arr1[] = "chen rui ya";
//	char arr2[20] = " ";//目标空间足够大
//	my_strcpy(arr2, arr1);
//	printf("%s\n", arr2);
//
//	return 0;
//}

//char* my_strcat(char* des, const char* src)
//{
//	char* p = des;//存下des指向的第一个元素的地址
//	assert(des && src);//断言一下，提升安全性 
//	while (*des++)//找到\0时，while就停止循环，此时p已经指向\0后面的一个元素
//	{
//		;
//	}
//	des--;//指向 '\0'
//	while (*des++ = *src++)//等价于*des=*src; des++; src++;
//	{
//		;
//	}
//	return p;
//}
//int main()
//{
//	char arr[25] = "hello ";
//	char arr1[] = "everybody";
//
//	printf("%s\n", my_strcat(arr, arr1));
//
//	return 0;
//}

//void my_strcat(char* p1, char* p2)
//{
//	while (*p1++)
//	{
//		;
//	}
//	p1--;
//	while (*p1++ = *p2++)
//	{
//		;
//	}
//
//}
//
//int main()
//{
//	char arr[200] = "haha";
//	my_strcat(arr, arr);
//	printf("%s", arr);
//
//	return 0;
//}

//#include<string.h>
//
//int my_strcmp(char* p1, char* p2)
//{
//	assert(p1 && p2);
//	while (*p1 == *p2)
//	{
//		if (!*p1)//先解引用，再逻辑非，及表示*p='\0'时返回0
//			return 0;
//		p1++; p2++;
//	}
//	if (*p1 > *p2)
//		return 1;
//	else
//		return -1;
//
//}
//int main()
//{
//	int rul = my_strcmp("abcd", "abcde");
//	printf("%d", rul);
//
//	return 0;
//}

//#include<stdio.h>
//#include<assert.h>
//char* my_strcat(char* des,const char* src)
//{
//	assert(*des && *src);
//	char* p = des;
//	while (*des++)//为\0时，des++了一次
//	{
//		;
//	}
//	des--;
//	while (*des++ = *src++)
//	{
//		;
//	}
//	return p;
//}
//int main()
//{
//	char arr[10] = "abc";
//	char arr1[] = "mmg";
//	printf("%s\n", my_strcat(arr,arr1));
//
//	return 0;
//}

//#include<assert.h>
//char* my_strcpy(char* des, const char* src)
//{
//	assert(des && src);
//	char* p = des;
//	while (*des++ = *src++)
//	{
//		;
//	}
//	return  p;
//}
//
//int main()
//{
//	char arr1[15] = "hello ";
//	char arr2[] = "Mr.c";
//	
//	printf("%s\n", my_strcpy(arr1, arr2));
//
//	return 0;
//}

//#include<assert.h>
//size_t my_strlen(const char* p)
//{
//	assert(p);
//	if (*p==0)
//		return 0;
//	else
//		return 1 + my_strlen(p + 1);
//}
//int main()
//{
//	char arr[] = "chenrui";
//	printf("%u\n", my_strlen(arr));
//
//	return 0;
//}


//#include<assert.h>
//#include<string.h>
//
//char* my_strstr(const char* p1, const char* p2)
//{
//	int i, j;
//	int len1 = strlen(p1);
//	int len2 = strlen(p2);
//
//	for (i = 0; i < len1 - len2 + 1; i++)//套用两个循环
//	{
//		int count = 0;
//		for (j = 0; j < len2; j++)
//		{
//			if (*(p1 + i +j) == *(p2+j))//不使用自加加，p1指向的依旧是arr1中的首字符地址
//			{
//				count++;
//				if (count == len2)
//					return p1+i;
//			}
//		}
//	}
//	return NULL;
//
//}
//int main()
//{
//	char arr1[] = "abccdebcd";
//	char arr2[] = "cde";
//	char* p = my_strstr(arr1, arr2);
//	assert(p);//找不到时就为空
//
//	printf("%s", p);
//
//	return  0;
//}

//#include<stdio.h>
//#include<assert.h>
//char* my_strstr(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//
//	while (*str1)
//	{
//		char* p1 = str1;//重置p1位置
//		char* p2 = str2;//
//		while (*p1 == *p2 && *p2 && *p1)//*p1用来判断str1字符串中是否有\0在
//		{								//*p2是判断是否找到
//			p1++;
//			p2++;
//		}
//		if (*p2 == 0)
//		{
//			return str1;
//		}
//		str1++;//没找到就后移一个字符
//	}
//	return NULL;
//}

//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "de";
//	char* p = my_strstr(arr1, arr2);
//	if (p)
//		printf("找到了：%s", p);
//	else
//		printf("NULL");
//
//	return 0;
//}

//#include <stdio.h>
//
//int main() {
//
//    int h, l, i, j;
//    scanf("%d%d", &h, &l);
//    int arr[10][10];
//    for (i = 0; i < h; i++)
//    {
//        for (j = 0; j < l; j++)
//        {
//            scanf("%d", &arr[i][j]);
//        }
//
//    }
//    int k;
//    scanf("%d", &k);
//    char c;
//    int a; int b;
//
//    for (j = 0; j < k; j++)
//    {
//        scanf(" %c%d%d", &c, &a, &b);
//
//        if (c == 'r')
//        {
//            for (i = 0; i < l; i++)//
//            {
//                int tmp = arr[a - 1][i];
//                arr[a - 1][i] = arr[b - 1][i];
//                arr[b - 1][i] = tmp;
//            }
//        }
//        else if (c == 'c')
//        {
//            for (i = 0; i < h; i++)//
//            {
//                int tmp = arr[i][a - 1];
//                arr[i][a - 1] = arr[i][b - 1];
//                arr[i][b - 1] = tmp;
//            }
//        }
//
//    }
//    for (i = 0; i < h; i++)
//    {
//        for (j = 0; j < l; j++)
//        {
//            printf("%d ", arr[i][j]);
//        }
//        printf("\n");
//    }
//
//  return 0;
//}


//#include<stdio.h>
//int main()
//{
//	float a = 7.5;
//	printf("%d\n", (int)a / 2);
//	printf("%lf", 1.0/4);
//
//	return 0;
//}

//#include <errno.h>
//
//int main()
//{
//	//打开文件
//	//打开文件的时候，如果文件的打开方式是"r"
//	//文件存在则打开成功，文件不存在打开失败
//	//打开文件失败的话，会返回NULL
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		printf("打开文件失败，原因是：%s\n", strerror(errno));
//		printf("%d\n", errno);
//		return 1;
//	}
//	
//	//读写文件
//	//...
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

#include<stdio.h>
#include<assert.h>
//void* my_memcpy(void* des, const void* src, size_t num)
//{
//	assert(des && src);//遇到有解引用的就考虑断言一下
//
//	//这里由于des通过移动来接收内存数据，所以des指向会改变即创建变量
//	//而且void* 类型的指针不可以进行解引用与++与--操作，所以最好避免使用++与--
//	//强制类型转换只是临时的转换当前类型
//
//	char* p = des;//char是最小字节数的类型（1个字节）
//	char* q = src;
//	while (num--)
//	{
//		*p++ = *q++;
//	}
//	return des;
//}
//int main()
//{
//	//int a[5] = { 0 };
//	int b[] = { 1,2,3,4,5,6,7 };
//	//拷贝前面三个整型
//	memcpy(b+2,b,12);//库函数
//	for (int i = 0; i < 7; i++)
//	{
//		printf("%d ", b[i]);
//	}
//
//	return 0;
//}
//#include<string.h>
//void* my_memmove(void* des, const void* src, size_t num)
//{
//	assert(des && src);
//	void* p = des;//保留原来的”味道“
//	if (des < src)//des指向的内容在src的前面
//	{
//		//从前向后拷贝
//		while (num--)//按照memcpy实现
//		{
//			*(char*)des = *(char*)src;
//			des = (char*)des + 1;
//			src = (char*)src + 1;
//		}
//	}
//	else//des指向的内容在src的后面
//	{
//		//从后向前拷贝
//		while (num--)//后置--，while从num开始第一次循环
//		{
//			*((char*)des + num) = *((char*)src + num);//此时的num已经-1了
//
//		}
//
//	}
//	return p;
//
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	my_memmove(arr + 2, arr,20);
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	 
//	return 0;
//}


//void test7()
//{
//	printf("%d\n", isdigit('6'));
//	printf("%d\n", isspace('2'));
//	printf("%d\n", islower('x'));
//	printf("%c\n", toupper('x'));
//	printf("%c\n", tolower('X'));
//}
//int main()
//{
//	test7();
//
//	return 0;
//}

//偶在前奇在后
//void Find(int arr[], size_t sz)
//{
//	int i = 0;
//	int left = 0; int right = sz - 1;
//	while (left < right)
//	{
//		while (arr[left] % 2 == 0&&left<right)//ji数出来
//		{
//			left++;
//		}
//		while (arr[right] % 2 != 0&&left<right)//ou
//		{
//			right--;
//		}
//		int tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//	}
//
//}
//int main()
//{
//	int arr[10] = { 1,3,5,7,9,11};
//	Find(arr, 6);
//	for (int i = 0; i < 6; i++)
//		printf("%d ", arr[i]);
//
//	return 0;
//}

//#include <stdio.h>
//#include<math.h>
//int main() {
//
//    int a;
//    scanf("%d", &a);
//    int sum = 0, x, k = 0;
//    while (a)
//    {
//        if (a % 10 % 2 == 0)
//            x = 0;
//        else
//            x = 1;
//        sum += x*pow(10, k);
//        k++; a = a / 10;
//    }
//    printf("%d", sum);
//    return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//int com(const void* p1, const void* p2)
//{
//    return *(int*)p1 - *(int*)p2;
//}
//int main() {
//    int n; scanf("%d", &n);
//    int* arr = (int*)malloc(sizeof(int) * n);
//    int i = 0, k, z = 1;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &k);
//        arr[i] = k;
//        if (i >= 1)
//        {
//            for (int j = 0; j < z; j++)
//            {
//                if (arr[i] == arr[j])//有相同的就跳出去
//                    break;
//                if(j==z-1)//都不同就存下来
//                arr[z++] = arr[i];
//            }
//
//        }
//
//    }
//
//    //排序
//    qsort(arr, z, sizeof(arr[0]), com);
//    for (i = 0; i < z; i++)
//        printf("%d ", arr[i]);
//
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//    int n;
//    scanf("%d", &n);
//    int i;
//    int k = 0;
//    int a[100001] = { 0 };
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &k);
//        a[k] = k;
//    }
//    for (i = 1; i < 100001; i++)
//    {
//        if (a[i] != 0)
//            printf("%d ", a[i]);
//    }
//    return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main() {
//
//    char arr[8001] = { 0 };
//    gets(arr);
//    int len = strlen(arr);
//    int count = 0;
//    for (int i = 0; i < len; i++)
//    {
//        if (arr[i] == 'C')
//        {
//            for (int j = i + 1; j < len; j++)
//            {
//                if (arr[j] == 'H')
//                {
//                    for (int k = j + 1; k < len; k++)
//                    {
//                        if (arr[k] == 'N')
//                        {
//                            count++;
//                        }
//
//                    }
//                }
//            }
//        }
//
//    }
//    printf("\t%d", count);
//
//    return 0;
//}

#include <stdio.h>
#include <string.h>

//int main() {
//
//    char arr[8001] = { 0 };
//    gets(arr);
//    int len = strlen(arr);
//    int count = 0, a = 0, sum = 0;
//    for (int i = 0; i < len; i++)
//    {
//        if (arr[i] == 'H')
//        {
//            for (int j = i - 1; j >= 0; j--)
//            {
//                if (arr[j] == 'C')
//                    count++;
//            }
//            for (int k = i + 1; k < len; k++)
//            {
//                if (arr[k] == 'N')
//                    a++;
//            }
//            sum += a * count;
//        }
//
//    }
//    printf("%d", sum);
//
//    return 0;
//}

//struct
//{
//	char a;
//	int b;
//
//}a;
//int main()
//{
//	a.a = 'q';
//	a.b = 12;
//	printf("%c %d\n", a.a, a.b);
//
//	return 0;
//}

//#include <stdio.h>
//long long Dou(long long n)
//{
//    int arr[10] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };
//    int count = 0, k = 2;
//    long long m = n;
//    while (1)
//    {
//        n = m * k;
//        while (n)
//        {
//            arr[n % 10] = n % 10;
//            n /= 10;
//        }
//        for (int i = 0; i < 10; i++)
//        {
//            if (arr[i] > 0)
//                count++;
//        }
//        if (count == 2)
//            return m * k;
//        k++;
//    }
//
//}
//int main() {
//
//    long long n;
//    while (~scanf("%lld", &n))
//    {
//        if (n != 0)
//        {
//            long long ret = Dou(n);
//            printf("%lld:%lld\n", n, ret);
//        }
//        else {
//            break;
//        }
//
//    }
//
//    return 0;
//}


//typedef struct
//{
//	char name[20];
//	short price;
//
//}S;
//
//int main()
//{
//	S s2 = { "活着",40 };//
//
//	return 0;
//}

//struct test
//{
//	int a;
//	struct test* p;
//};
//int main()
//{
//	struct test s2;
//	struct test s1 = { 12, &s2 };
//	//等价于 s1.p = &s2 使得s1与s2建立联系
//	s2.a = 21;
//	s2.p = NULL;//不指向其它
//	printf("%d %d", s1.a, s1.p->a);//s1.p 就是 &s2
//
//	return 0;
//}

//
//struct test1
//{
//	int a;
//	char b;
//};
//struct test2
//{
//	float c;
//	struct test1 d;
//};
//int main()
//{
//	struct test2 m = { 32.7f,{100,'C'} };
//	printf("%f %d %c", m.c, m.d.a, m.d.b);
//	return 0;
//}

//int main()
//{
//	printf("%zu\n", sizeof(char));
//	printf("%zu\n", sizeof(short));
//	printf("%zu\n", sizeof(float));
//	printf("%zu\n", sizeof(double));
//
//
//	return 0;
//}

//struct test1
//{
//	char a;
//	short b;
//	int c;
//}s;
//struct test2
//{
//	char a;
//	int c;
//	short b;
//};
//struct test3
//{
//	int a;
//	int b;
//	double c;
//};
//
//int main()
//{
//	printf("%zu\n", sizeof(struct test1));
//	printf("%zu\n", sizeof(struct test2));
//	printf("%zu\n", sizeof(struct test3));
//
//	return 0;
//}


//struct tes
//{
//	double a;
//	char b;
//	int i;
//};
//struct test
//{
//	char a;
//	struct tes b;
//	double d;
//};
//
//int main()
//{
//	printf("%zu\n", sizeof(struct test));
//
//	return 0;
//}

//typedef struct {
//	int a;
//	char b;
//	short c;
//	short d;
//}AA_t;
//int main()
//{
//	printf("%zu", sizeof(AA_t));
//}

//struct book
//{
//	char arr[3];
//	int brr[2];
//	short c;
//	double d;
//};

//#pragma pack(1)//修改默认对齐数为1
//struct test
//{			
//	char a;//所有成员对齐数为1
//	int b;
//	char c;
//};
//#pragma pack()//取消设置的默认对齐数，还原为默认
//int main()
//{
//	printf("%zu", sizeof(struct test));
//
//	return 0;
//}

//#pragma pack(4)/*编译选项，表示4字节对齐 平台：VS2013。语言：C语言*/
////假设long 是4个字节
//int main(int argc, char* argv[])
//{
//    struct tagTest1
//    {
//        short a;
//        char d;
//        long b;
//        long c;
//    };
//    struct tagTest2
//    {
//        long b;
//        short c;
//        char d;
//        long a;
//    };
//    struct tagTest3
//    {
//        short c;
//        long b;
//        char d;
//        long a;
//    };
//    struct tagTest1 stT1;
//    struct tagTest2 stT2;
//    struct tagTest3 stT3;
//
//    printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
//    return 0;
//}
//#pragma pack()


//typedef struct test
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//}test;
//int main()
//{
//	test k = { 0 };
//	k.a = 9;
//	k.b = 8;
//	k.c = 7;
//	k.d = 6;
//
//	return 0;
//}

//enum day
//{
//	Monday,
//	Tuesday = 2,
//	Wednesday,
//	Thursday,
//	Friday,
//	Saturday ='0',
//	Sunday
//};
//int main()
//{
//	printf("%d %d %d %d %d %d %d", Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
//
//	return 0;
//}

//int main()
//{
//    unsigned char puc[4];
//    struct tagPIM
//    {
//        unsigned char ucPim1;
//        unsigned char ucData0 : 1;
//        unsigned char ucData1 : 2;
//        unsigned char ucData2 : 3;
//    }*pstPimData;
//    pstPimData = (struct tagPIM*)puc;
//    memset(puc, 0, 4);
//    pstPimData->ucPim1 = 2;
//    pstPimData->ucData0 = 3;
//    pstPimData->ucData1 = 4;
//    pstPimData->ucData2 = 5;
//    printf("%02x %02x %02x %02x\n", puc[0], puc[1], puc[2], puc[3]);
//    return 0;
//}

//代码1
#include <stdio.h>


//int main()
//{
//	char arr[20];
//	char brr[20];
//	scanf("%s", arr);
//	scanf("%s", brr);
//	printf("%s\n", arr);
//	printf("%s", brr);
//	
//	return 0;
//}

//struct test
//{
//	char a;
//	short b;
//	char c[20];
//	int k;
//}n;
//
//int main()
//{
//	struct test a = { 'q',12,"陈瑞",37};
//	struct test b = { 'q',12,"陈瑞",37};
//	if (a.a == b.a)
//	{
//		printf("一样\n");
//	}
//
//	return 0;
//}

#include"add.h"
void menue()
{
	printf("******************************\n");
	printf("***** 0.exit       1.add *****\n");
	printf("***** 2.del        3.find ****\n");
	printf("***** 4.show       5.modify **\n");
	printf("***** 6.sort             *****\n");
	printf("******************************\n");
}
enum nue
{
	exi,
	add,
	del,
	find,
	show,
	modify,
	sort

};
int main()
{
	ever infor = { 0,0,5 }; //通讯录初始化
	infor.p = (peo*)malloc(5 * sizeof(peo));//动态开辟五个联系人空间
	assert(infor.p);//判断是否开辟成功
	Load(&infor);//加载之前输入的数据
	int n;
	do
	{
		menue();
		printf("请选择你对通讯录的操作\n");
		scanf_s("%d", &n);
		switch (n)
		{
		case exi:
			Exi(&infor);//退出时将数据存进文件
			printf("退出\n");
			break;
		case add:
			Add(&infor);
			break;
		case del:
			Del(&infor);
			break;
		case find:
			Find(&infor);
			break;
		case show:
			Show(&infor);
			break;
		case modify:
			Modify(&infor);
			break;
		case sort:
			Sort(&infor);
			break;
		default:
			printf("输入有误，重试\n");
			break;

		}

	} while (n);

	return 0;
}